Frage

Wie kann ich ein Bitmap in Byte-Array-Format JPEG-Format konvertieren .net 2.0 verwenden?

War es hilfreich?

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;
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top