2

我正在使用 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 与实际计数完全不同),即使我的相机 SD 卡中只有 2 张照片。有没有办法将文件正确传输甚至剪切到我的电脑上?这是我收到的例外。 在此处输入图像描述

4

1 回答 1

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

这很好用。除了如果文件由于某种原因已经存在,您需要尝试捕获并修复问题。

于 2012-12-18T03:39:47.643 回答