C#: comment convertir le tableau Bitmap byte au format JPEG?

Comment puis-je convertir un BITMAP au format byte array au format JPEG en utilisant .net 2.0?

25
demandé sur Marc 2009-01-19 14:50:58

3 réponses

quel type de byte[] voulez-vous dire? Les données brutes du flux de fichiers? Dans ce cas, Que diriez-vous de quelque chose comme (en utilisant System.Drawing.dll dans une application client):

    using(Image img = Image.FromFile("foo.bmp"))
    {
        img.Save("foo.jpg", ImageFormat.Jpeg);
    }

Ou utiliser FromStream avec un new MemoryStream(arr) si vous avez vraiment un byte[]:

    byte[] raw = ...todo // File.ReadAllBytes("foo.bmp");
    using(Image img = Image.FromStream(new MemoryStream(raw)))
    {
        img.Save("foo.jpg", ImageFormat.Jpeg);
    }
44
répondu Marc Gravell 2009-01-19 12:04:06

S'il ne s'agit que d'une mémoire tampon de données brutes, et non d'un fichier image complet(y compris les en-têtes, etc., comme un JPEG) alors vous ne pouvez pas utiliser L'Image.FromStream.

je pense que ce que vous cherchez peut-être C'est le système.Dessin.Bitmap.LockBits, retour D'un système.Dessin.L'imagerie.ImageData; permet d'accéder à la lecture et à l'écriture des pixels de l'image à l'aide d'un pointeur vers la mémoire.

3
répondu baretta 2009-01-19 12:08:58
public static Bitmap BytesToBitmap(byte[] byteArray)
{
  using (MemoryStream ms = new MemoryStream(byteArray))
  {
    Bitmap img = (Bitmap)Image.FromStream(ms);
    return img;
  }
}
-4
répondu juanjo.arana 2012-04-12 13:50:45