C #: Wie BITMAP Byte-Array in der JPEG-Format konvertieren?
Frage
Wie kann ich ein Bitmap in Byte-Array-Format JPEG-Format konvertieren .net 2.0 verwenden?
Lösung
Welche Art von byte[]
meinst du damit? Die RAW-Datei-Stream-Daten? In diesem Fall, wie wäre es so etwas wie (System.Drawing.dll
in einer Client-Anwendung verwendet wird):
using(Image img = Image.FromFile("foo.bmp"))
{
img.Save("foo.jpg", ImageFormat.Jpeg);
}
oder benutzen FromStream
mit einem new MemoryStream(arr)
, wenn Sie wirklich ein byte[]
tun haben:
byte[] raw = ...todo // File.ReadAllBytes("foo.bmp");
using(Image img = Image.FromStream(new MemoryStream(raw)))
{
img.Save("foo.jpg", ImageFormat.Jpeg);
}
Andere Tipps
Wenn es nur ein Puffer von Rohpixeldaten ist, und nicht eine vollständige Bilddatei (einschließlich Header usw., wie ein JPEG), dann können Sie nicht Image.FromStream verwenden.
Ich denke, was Sie ist System.Drawing.Bitmap.LockBits könnte suchen, eine System.Drawing.Imaging.ImageData Rückkehr; Dieser Zugang bietet zu lesen und das Bild der Pixel mit einem Zeiger auf den Speicher zu schreiben.
public static Bitmap BytesToBitmap(byte[] byteArray)
{
using (MemoryStream ms = new MemoryStream(byteArray))
{
Bitmap img = (Bitmap)Image.FromStream(ms);
return img;
}
}