0

我正在尝试将图像发送到 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?我将使用传入的字节数组在 com dll 中创建一个 opencv cv::mat。

谢谢。

4

1 回答 1

0

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

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

于 2013-06-24T12:22:15.323 回答