現在、Canon EDSDKに取り組んでいます。ライブビュー画像が非常に遅くなります (毎秒 5 画像)。どうすればもっと速くできますか?
これは、画像へのポインタを取得するための私のコードです:
uint _err = EDSDK.EDS_ERR_OK; IntPtr imageRef = IntPtr.Zero; IntPtr streamRef = IntPtr.Zero; IntPtr streamPtr = IntPtr.Zero; 単位の長さ = 0; _err = EDSDK.EdsCreateMemoryStream(0, out streamRef); もし (EDSDK.EDS_ERR_OK == _err) _err = EDSDK.EdsCreateEvfImageRef(streamRef, out imageRef); もし (EDSDK.EDS_ERR_OK == _err) _err = EDSDK.EdsDownloadEvfImage(_camera, imageRef); もし (EDSDK.EDS_ERR_OK == _err) { // 画像を表示 _err = EDSDK.EdsGetPointer(streamRef, out streamPtr); もし (EDSDK.EDS_ERR_OK == _err) _err = EDSDK.EdsGetLength(streamRef, out Length); }
次に、画像をビットマップにロードしますが、非常に遅いです。私のコード:
バイト[] b = 新しいバイト[長さ]; Marshal.Copy(streamPtr, b, 0, (int)Length); 使用 ( MemoryStream ac = 新しい MemoryStream(b)) { img = (ビットマップ)Image.FromStream(ac); ac.Close(); }