C# EDSDK를 사용하여 Canon 카메라 용 Camera Controller 응용 프로그램을 만들었습니다. 호스트 PC에 이미지를 다운로드 할 수 있지만 캐논 EOS 유틸리티 소프트웨어와 비교할 때 많은 시간이 걸립니다. 현재 약 22 초 만에 22 메가 픽셀 Jpg 이미지를 다운로드 중입니다. Canons 소프트웨어를 사용하면 1 초도 채 걸리지 않습니다. RAW 이미지 (22MPixel)의 경우 캐논 유틸리티 소프트웨어로 약 2 ~ 3 초, SDK를 사용하면 약 11 초가 소요됩니다.Canons EDSDK를 사용하여 이미지를 다운로드하는 가장 빠른 방법은 무엇입니까?
내 이벤트 핸들러에 다음 코드를 사용하고 있습니다 :
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은 소프트웨어에서 완전히 다른 루틴을 사용합니까?
미리 도움 주셔서 감사합니다.
ApiMonitor를 다운로드하여 EOS 유틸리티 소프트웨어가 EDSDK를 사용하는지 확인하십시오 :) –
고마워, 저도 시도해 봤지만 SDK를 사용하고있는 것으로 보입니다. – Tim
먼저 memorystream에 다운로드하고 하드 드라이브 (즉, 파일 스트림)에 두 번째 단계로 다운로드 할 수 있습니다. 그 외에는 내가 아는 한 SDK로 할 수있는 일이 많지 않습니다. –