C #: Comment convertir un tableau d'octets BITMAP au format JPEG?
Question
Comment convertir un fichier BITMAP au format tableau sur octets au format JPEG avec .net 2.0?
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;
}
}