我正在使用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);
}
}
在此代码中,即使我的相机SD卡中只有2张照片,我的d.Items.Count仍在不断增加(例如29,与实际计数完全不同)。有没有办法将文件正确传输甚至剪切到我的计算机上?
这是我收到的例外。
最佳答案
答案只是选择索引中的最后一个条目。就我而言,我只需要获取最新照片即可,这样效果很好。
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++;
}
}
这很好。除非文件由于某种原因已经存在,否则您需要尝试捕获并解决问题。
关于c# - WIA将图像保存在.NET C#中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13914707/