Question

Comment convertir un fichier BITMAP au format tableau sur octets au format JPEG avec .net 2.0?

Était-ce utile?

La solution

Quel type de octet [] 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 cliente):

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

Ou utilisez FromStream avec un nouveau MemoryStream (arr) si vous avez réellement un octet [] :

    byte[] raw = ...todo // File.ReadAllBytes("foo.bmp");
    using(Image img = Image.FromStream(new MemoryStream(raw)))
    {
        img.Save("foo.jpg", ImageFormat.Jpeg);
    }

Autres conseils

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

Je pense que ce que vous recherchez peut-être, c'est System.Drawing.Bitmap.LockBits, en retournant un System.Drawing.Imaging.ImageData; cela donne accès à la lecture et à l'écriture des pixels de l'image à l'aide d'un pointeur sur la mémoire.

public static Bitmap BytesToBitmap(byte[] byteArray)
{
  using (MemoryStream ms = new MemoryStream(byteArray))
  {
    Bitmap img = (Bitmap)Image.FromStream(ms);
    return img;
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top