现在我为自己开发佳能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 = new MemoryStream(b)) { img = (Bitmap)Image.FromStream(ac); ac.Close(); }