图像到阵列,尺寸损失?

时间:2012-07-12 22:47:18

标签: c# image

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

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

我得到一张500 x 500的图像(根据image.Size.Height(宽度))。但是当我尝试使用

将其转换为字节数组时
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。之后我会将1d数组arr转换为2d数组。我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

您没有保存像素表示。您正在保存JPEG文件的字节。如果你想要实际像素,你需要在像素上循环。

另请注意,每个像素至少包含3个组件:红色,绿色,蓝色。

答案 1 :(得分:1)

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

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