2014-07-18 6 views
0

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은 소프트웨어에서 완전히 다른 루틴을 사용합니까?

미리 도움 주셔서 감사합니다.

+1

ApiMonitor를 다운로드하여 EOS 유틸리티 소프트웨어가 EDSDK를 사용하는지 확인하십시오 :) –

+0

고마워, 저도 시도해 봤지만 SDK를 사용하고있는 것으로 보입니다. – Tim

+1

먼저 memorystream에 다운로드하고 하드 드라이브 (즉, 파일 스트림)에 두 번째 단계로 다운로드 할 수 있습니다. 그 외에는 내가 아는 한 SDK로 할 수있는 일이 많지 않습니다. –

답변

0

수수께끼를 풀어 줬습니다! 위 코드는 내가 아는 한 가장 빠른 이미지 다운로드 방법입니다. 또한 이미지를 메모리 스트림으로 다운로드 한 다음 JohannesB가 제안한 것처럼 이미지를 저장하려고했습니다 (위의 주석 참조). 이미 언급했듯이 다운로드 시간면에서 큰 차이는 아니지만 결국 이미지 저장에 대부분의 시간이 소비되었음을 알게되었습니다.

저장 시간이 긴 이유는 선택한 파일 위치 때문입니다. 기본적으로 Environment.SpecialFolder.MyPictures를 가리 킵니다. 이것은 내 네트워크 드라이브를 가리 킵니다. 로컬 드라이브를 선택했을 때 저장 시간은 22MPixel Jpeg의 경우 150ms로 줄어 들었습니다.

도움을 주셔서 감사합니다.