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++;
            }
        }

Это работает очень хорошо. За исключением того, что если файл уже существует по каким-либо причинам, вам нужно попытаться поймать и исправить проблему.

Другие вопросы по тегам