2013-06-20 99 views
0

我正在嘗試將圖像發送到atl com dll。在C#中,從C#發送圖像到ATL COM DLL

System.Drawing.Imaging.BitmapData bmpdata = 
bmp1.LockBits(new System.Drawing.Rectangle(0,0,bmp1.Width, bmp1.Height), 
System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp1.PixelFormat); 

而得到的BitmapData就這樣的字節組,

bmpdata.Scan0; 

我怎麼能在發送該位圖數據到ATL COM DLL?我將使用傳入的bytearray在com DLL中創建一個opencv cv :: mat。

謝謝。

回答

0

我猜自動化兼容的方式是將Marshal.Copy的內容轉換爲一個字節數組,並將它編組爲字節的SAFEARRAY。

我不知道這是最簡單的方法,但這是我能想到的第一個。如果你的接口不是自動兼容的,比如簡單地將IntPtr作爲字節指針和大小傳遞,那麼可能還有其他方法。