我使用C# EDSDK为佳能相机创建了一个相机控制器应用程序。我可以下载图像到主机PC,但它仍然需要很多时间相比佳能EOS实用软件。目前,我正在下载一个大约2.5秒的2200万像素的Jpg图像。当我使用佳能软件时,它所需的时间还不到一秒钟。对于原始图像(22 22MPixel),使用佳能实用软件需要2到3秒,使用SDK大约需要11秒。
我在我的EventHandler中使用了以下代码:
public void DownloadImage(DownloadItem item)
{
EDSDK.EdsDirectoryItemInfo dirInfo;
IntPtr streamRef;
Stopwatch timer = new Stopwatch();
timer.Start();
Error = EDSDK.EdsGetDirectoryItemInfo(item.ImageObjectPointer,
out dirInfo);
Error = EDSDK.EdsCreateFileStream(
item.FilePath,
EDSDK.EdsFileCreateDisposition.CreateAlways,
EDSDK.EdsAccess.ReadWrite,
out streamRef);
Error = EDSDK.EdsDownload(item.ImageObjectPointer, dirInfo.Size, streamRef);
//Tell the SDK we finished the download
Error = EDSDK.EdsDownloadComplete(item.ImageObjectPointer);
//Release Resources
Error = Release(streamRef);
Error = Release(item.ImageObjectPointer);
timer.Stop();
var ms = timer.ElapsedMilliseconds;
this.Log().DebugFormat("Download time for image {0}: \t{1}\t ms",
Path.GetFileName(item.FilePath),
ms.ToString());
}有人知道更快的图像下载例程吗?或者佳能在他们的软件中使用完全不同的例程?
提前感谢您的帮助!
发布于 2014-07-23 08:17:30
解开了谜团!据我所知,上面的代码是下载图像最快的方法。我还尝试将图像下载到内存流中,然后保存映像,就像JohannesB建议的那样(参见上面的注释)。正如他已经提到的,下载时间并没有太大的不同,但最终它帮助我发现,大部分时间都花在了保存映像上。
保存时间长的原因是所选的文件位置。默认情况下,它指向Environment.SpecialFolder.MyPictures。这是指向我的网络驱动器。当我选择本地驱动器时,22 22MPixel的节省时间减少到150 my。
非常感谢你的帮助!
https://stackoverflow.com/questions/24822341
复制相似问题