【发布时间】:2019-05-17 10:05:08
【问题描述】:
我想用原始位图制作一个 int32[] 位数组
有没有办法创建一个包含原始位图的 int32[]?
这样我就可以使用读取像素
int index = x + (y * Width);
int col = Bits[index];
Color result = Color.FromArgb(col);
而不是
bitmap.GetPixel()
【问题讨论】:
我想用原始位图制作一个 int32[] 位数组
有没有办法创建一个包含原始位图的 int32[]?
这样我就可以使用读取像素
int index = x + (y * Width);
int col = Bits[index];
Color result = Color.FromArgb(col);
而不是
bitmap.GetPixel()
【问题讨论】:
如Convert a bitmap into a byte array 所示,您可以使用ImageConverter 或MemoryStream。
【讨论】:
假设您有文件的路径,并且您确定文件格式是每种颜色一个字节,您可以像这样从文件中读取字节:
var Bits = System.IO.File.ReadAllBytes("path_to_the_image");
位将是一个字节数组,因此不需要在 Color.FromArgb() 函数上使用显式转换。
【讨论】:
int32[],而不是byte[]
byte[] 获取int[] 不是问题,只需致电Buffer.BlockCopy。
System.IO.File.ReadAllBytes("path_to_the_image"); 从path_to_the_image 路径中的文件中读取所有字节。好的,你用Buffer.BlockCopy 将byte[] 转换为int[],但问题是关于像素数据,而不是文件数据。现在,您如何处理文件格式?如何从int[] 中删除所有图像标题和元信息?