Comment puis-je convertir un bitmap au format Array d'octet au format JPEG à l'aide de .NET 2.0?
Quel type de byte[]
Voulez-vous dire? Les données de flux de fichiers brutes? 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 utilisez FromStream
avec une 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);
}
S'il ne s'agit que d'un tampon de données de pixels brutes, et non d'un fichier image complet (y compris des en-têtes, etc., tels qu'un JPEG), vous ne pouvez pas utiliser image.fromstream.
Je pense que ce que vous recherchez est System.Drawing.Bitmap.Lockbits, retourner un système.Drawing.iming.imagedata; Cela donne accès à la lecture et à l'écriture des pixels de l'image à l'aide d'un pointeur à la mémoire.