2

我正在尝试将 JPG 图像转换为(双)二维数组。使用:

Image image = Image.FromFile("image.jpg");

我得到一个 500 x 500 的图像(根据 image.Size.Height(Width))。但是当我尝试将其转换为字节数组时

byte[] arr;
using (MemoryStream ms = new MemoryStream())
{
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    arr = ms.ToArray();
}

我得到arr.GetLength(0)=35640,它小于 500*500=250000。之后我会将一维数组转换arr为二维数组。我错过了什么吗?

4

2 回答 2

2

您没有保存像素表示..您正在保存 JPEG 文件的字节。如果您想要实际像素,则需要遍历像素。

另请注意,每个像素至少有 3 个分量:红色、绿色、蓝色。

于 2012-07-12T22:51:27.587 回答
1

如果以 JPEG 格式保存图像,写入流的像素将被压缩。

如果您想操作图像的像素,您可能应该将图像加载到位图中,然后调用 Bitmap.LockBits 以获取内存中的原始像素。

于 2012-07-12T22:50:33.743 回答