現在、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();
}