【发布时间】:2010-10-02 05:23:15
【问题描述】:
如何使用 .net 2.0 将字节数组格式的 BITMAP 转换为 JPEG 格式?
【问题讨论】:
如何使用 .net 2.0 将字节数组格式的 BITMAP 转换为 JPEG 格式?
【问题讨论】:
你是指什么类型的byte[]?原始文件流数据?在这种情况下,怎么样(在客户端应用程序中使用System.Drawing.dll):
using(Image img = Image.FromFile("foo.bmp"))
{
img.Save("foo.jpg", ImageFormat.Jpeg);
}
如果您确实有byte[],则使用FromStream 和new MemoryStream(arr):
byte[] raw = ...todo // File.ReadAllBytes("foo.bmp");
using(Image img = Image.FromStream(new MemoryStream(raw)))
{
img.Save("foo.jpg", ImageFormat.Jpeg);
}
【讨论】:
如果它只是原始像素数据的缓冲区,而不是完整的图像文件(包括标题等,例如 JPEG),则不能使用 Image.FromStream。
我认为您可能正在寻找 System.Drawing.Bitmap.LockBits,返回 System.Drawing.Imaging.ImageData;这提供了使用指向内存的指针读取和写入图像像素的访问权限。
【讨论】:
public static Bitmap BytesToBitmap(byte[] byteArray)
{
using (MemoryStream ms = new MemoryStream(byteArray))
{
Bitmap img = (Bitmap)Image.FromStream(ms);
return img;
}
}
【讨论】: