【发布时间】:2014-11-12 19:52:14
【问题描述】:
我想将字节数组转换为位图。我从采集卡中得到这个字节数组。包含此数组的 RGB24 数据。当我将此数组转换为位图对象时,出现“参数无效”错误。
这是我的字节数组
myByteArray{byte[921600]}
MemoryStream mStream = new MemoryStream(myByteArray);
Bitmap bi = new Bitmap(mStream );
和
using (MemoryStream mStream = new MemoryStream(myByteArray))
{
Bitmap bi = (Bitmap)System.Drawing.Image.FromStream(mStream );
}
和
using (MemoryStream mStream = new MemoryStream())
{
mStream.Write(myByteArray, 0, myByteArray.Length);
mStream.Seek(0, SeekOrigin.Begin);
Bitmap bm = new Bitmap(mStream);
return bm;
}
这是因为数组的大小而发生的吗? 任何人都可以提供一种方法来完成这项任务吗? 将不胜感激。
谢谢
【问题讨论】:
-
你如何得到你的数组?
-
我怀疑
myByteArray既不是System.Drawing.Image也不是System.Drawing.Bitmap。你必须把它转换成一个。 -
myByteArray{byte[921600]}不是有效的 C#。您实际的byte[]初始化是什么?System.Drawing.Image中没有FromImage()方法。如果您显示无效代码,您只会得到无用的答案。 -
我是通过采集卡回调函数得到这个数组的。这是我使用的方法。
public static int ShowPIP(VIDEO_SAMPLE_INFO VideoInfo, IntPtr ptData, int lLength, long tRefTime, int lUserData) { byte[] bData = new byte[lLength]; Marshal.Copy(ptData, bData, 0, lLength); m_ShowPipForm.ShowPIP(VideoInfo, myByteArray); return 1; }
标签: c# winforms bitmap bytearray