我正在尝试将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数组。我错过了什么吗?
答案 0 :(得分:2)
您没有保存像素表示。您正在保存JPEG文件的字节。如果你想要实际像素,你需要在像素上循环。
另请注意,每个像素至少包含3个组件:红色,绿色,蓝色。
答案 1 :(得分:1)
如果以JPEG格式保存图像,则会压缩写入流的像素。
如果您想要操作图像的像素,您应该将图像加载到Bitmap中,然后调用Bitmap.LockBits来获取内存中的原始像素。