JPG是一種壓縮格式,這就是爲什麼它的尺寸(和的大小對應的字節數組) 通常會遠遠小於1920 * 1080 * 3。爲了從JPG得到字節數組,你可以使用 流:
Image myImage;
...
byte[] result;
using (MemoryStream ms = new MemoryStream()) {
myImage.Save(ms, ImageFormat.Jpeg);
result = ms.ToArray();
}
如果你想要的是字節數組的形式,你有你的JPG轉換成BMP(或其他原始,未壓縮格式)像素
Bitmap myImage;
...
byte[] rgbValues = null;
BitmapData data = myImage.LockBits(new Rectangle(0, 0, myImage.Width, myImage.Height), ImageLockMode.ReadOnly, value.PixelFormat);
try {
IntPtr ptr = data.Scan0;
int bytes = Math.Abs(data.Stride) * myImage.Height;
rgbValues = new byte[bytes];
Marshal.Copy(ptr, rgbValues, 0, bytes);
}
finally {
myImage.UnlockBits(data);
}
}
你有什麼試過的?你可以發佈一些代碼嗎? http://stackoverflow.com/help/how-to-ask –
「所以這段代碼不能慢」 - 但是你的最終版本不會使用你的測試圖像作爲源代碼,所以不需要解碼JPEG文件會嗎? – Rup
這裏有人解釋如何從圖像創建一個字節數組。這可能有幫助。 http://stackoverflow.com/questions/7350679/convert-a-bitmap-into-a-byte-array-in-c –