C# EDSDK を使用して、Canon カメラ用のカメラ コントローラー アプリケーションを作成しました。画像をホスト PC にダウンロードすることはできますが、キヤノンの EOS ユーティリティ ソフトウェアに比べてまだ時間がかかります。現在、22 メガピクセルの Jpg 画像を約 2.5 秒でダウンロードしています。Canons ソフトウェアを使用すると、1 秒もかかりません。RAW 画像 (22MPixel) の場合、Canons Utility Software で約 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());
}
画像のより高速なダウンロード ルーチンについて知っている人はいますか? それとも、Canon は自社のソフトウェアでまったく異なるルーチンを使用していますか?
よろしくお願いします。