将图像从C#发送到ATL COM DLL

时间:2013-06-20 08:07:30

标签: dll com atl bitmapdata

我正在尝试将图片发送到atl com dll。在C#中,

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的bytearray就像这样,

bmpdata.Scan0;

如何将此位图数据发送到ATL COM dll?我将使用传入的bytearray在com dll中创建一个opencv cv :: mat。

感谢。

1 个答案:

答案 0 :(得分:0)

我认为自动化兼容的方式是将Marshal.Copy内容转换为字节数组,并将其封送为SAFEARRAY字节。

我不知道这是最简单的方法,但这是我能想到的第一个。如果您的接口不兼容自动化,可能还有其他方法,例如简单地将IntPtr作为字节指针和大小传递。