【问题标题】:Byte array to Image C#字节数组到图像 C#
【发布时间】:2013-07-05 15:49:22
【问题描述】:

我有一个简单的字节字符串(矩阵的元素逐行读取)。我希望将它绘制在 c# 中的图像中。有什么简单的方法可以做到这一点。

在互联网上我找到了字节数组到图像的转换,但我认为为此字节字符串应该具有某种格式,因为我没有看到任何宽度和高度的建立。

有什么建议吗?

【问题讨论】:

  • 如果我没记错的话,您需要查看Graphics 类来构建附加到BitmapImage 的上下文,然后使用SetPixel 绘制您的值。
  • 请告诉我们您所说的“字节串”和“某种格式”,以及“图像转换”的例子。

标签: c# image bytearray


【解决方案1】:

假设您的字节字符串包含支持的pixel formats 中图像的每个像素的颜色数据,您可以使用以下构造函数创建具有特定大小的BitmapBitmap(int width, int height

然后使用Bitmap.LockBits(Rectangle, ImageLockMode, PixelFormat)将位图锁定到系统内存中,并使用BitmapData.Scan0获取位图中第一个像素数据的地址。

之后,您可以操作原始位图数据。例如,您可以使用 Marshal.Copy(Byte[], Int32, IntPtr, Int32) 将字节复制到其中。

最后用Bitmap.UnlockBits(BitmapData)解锁位图。

瞧!您已经从字节数组创建了位图。

【讨论】:

  • 这听起来不像他有颜色数据,而是原始数据(例如某种传感器的输出)。您的大部分答案都在目标上,但我怀疑他是否需要Marshal.Copy。更有可能的是,他需要单独设置位。
【解决方案2】:

你试过这个代码吗:

public Bitmap ConvertBytesToImage(byte[] BytesToConvert)
{
    MemoryStream ms = new MemoryStream(BytesToConvert);
    try { return new Bitmap(ms); }
    catch { return null; }
}

【讨论】:

  • -1:OP 说他有矩阵中的值,而不是已经采用图像格式的字节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 2012-07-28
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 2013-12-24
  • 2010-10-30
相关资源
最近更新 更多