WIA для сохранения изображений в.NET C#
Я использую WIA для программной фотографии, и затем это изображение будет скопировано в определенную папку на моем рабочем столе. Все идет хорошо, кроме спасительной части.
void deviceManager_OnEvent(string EventID, string DeviceID, string ItemID)
{
for (int i = 1; i <= d.Items.Count; i++)
{
wiaImageFile = (WIA.ImageFile)d.Items[i].Transfer(FormatID.wiaFormatJPEG);
wiaImageFile.SaveFile(Properties.Settings.Default.FolderNameRaw + "\\1.jpg");
if (wiaImageFile != null)
Marshal.ReleaseComObject(wiaImageFile);
}
}
В этом коде мой d.Items.Count постоянно увеличивается (например, 29, что совершенно не соответствует фактическому количеству), хотя у меня только 2 фотографии на SD-карте моей камеры. Есть ли способ правильно перенести или даже вырезать файл на моем компьютере? Это исключение, которое я получаю.
1 ответ
Ответом на это является просто выбор последней записи в индексе. В моем случае мне нужно только взять последнюю фотографию, чтобы она работала хорошо.
if (EventID == WIA.EventID.wiaEventDeviceConnected)
{
Console.WriteLine("Connected: D5100");
}
if (EventID == WIA.EventID.wiaEventItemCreated)
{
if (d != null)
{
foreach (Property p in d.Properties)
{
if (p.Name.Equals("Pictures Taken"))
Console.WriteLine("Taken");
}
wiaImageFile = (WIA.ImageFile)(d.Items[d.Items.Count].Transfer(FormatID.wiaFormatJPEG));
wiaImageFile.SaveFile(Properties.Settings.Default.FolderNameRaw + "\\" + imageCount + ".jpg");
imageCount++;
}
}
Это работает очень хорошо. За исключением того, что если файл уже существует по каким-либо причинам, вам нужно попытаться поймать и исправить проблему.