我正在尝试将图片发送到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。
感谢。
答案 0 :(得分:0)
我认为自动化兼容的方式是将Marshal.Copy
内容转换为字节数组,并将其封送为SAFEARRAY字节。
我不知道这是最简单的方法,但这是我能想到的第一个。如果您的接口不兼容自动化,可能还有其他方法,例如简单地将IntPtr作为字节指针和大小传递。