Comment transformer une image d'extension bmp (noir et blanc, niveau de gri, image couleur) en un tableau de byte en C# en Compact framework, pour que je puisse appliquer sur ce tableau d'algorithme AES.
et la meme chose pour l'opération inverse (cad de tableau de byte à une image .bmp couleur, niveau de gri, noir et blanc).
j'ai utilisé ces instructions pour passé de l'image vers le tableau:
FileStream fs = File.OpenRead(textBox7.Text);
int width = img.Width;
int height = img.Height;
byte[] pl = new byte[width * height];
fs.Read(pl, 0, width * height);
fs.Close();
et j'ai utilisé Bitmap pour l'affichage mais j'ai l'exception dans le 2eme ligne, qui me dis :"ArgumentException n'a pas été gérée,La valeur n'est pas comprise dans la plage attendue." , pourtant les valeurs de mon tableau entre 0 et 255:
System.IO.MemoryStream ms = new System.IO.MemoryStream(byte tab);
Bitmap hh = new Bitmap(ms);
pictureBox2.Image = hh;
Je ne sais pas si ça peut t'aider mais je pense que pour convertir ton bitmap en byte[] tu peux essayer ça:
System.Drawing.Bitmap bmp = GetTheBitmap();
System.IO.MemoryStream stream = new System.IO.MemoryStream();
bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
stream.Position = 0;
byte[] data = (byte[])System.ComponentModel.TypeDescriptor.GetConverter(bmp).ConvertTo(bmp, typeof(byte[]));
Cependant l'header du format Bitmap ets stocké dans ton byte[], il faudra le virer à la main.
Ceci pourra peut-être t'aider pour la taille de l'en-tête: Format BMP
Merci DrIvory, mais je pense que la méthode save n'existe pas dans le Compact framework, elle est uniquement dans le winform, et moi j'applique mon application sur l'emulateur pocket pc 2003.
désolé j'ai testé et la méthode save existe, mais l'erreur est dans GetTheBitmap() et GetConverter(bmp), le c# ne le connais pas
, je pense que c'est le compact framework qui n'a pas ces méthodes
oui c'est vraie, save existe dans le Compact framework, mais le problème est dans la méthode GetConverter de System.ComponentModel.TypeDescriptor pour transformer l'image bmp en tableau de byte qui n'existe pas dans le compact framework et aussi la méthode ImageConverter est introuvable dans compact framework pour faire l'opération inverse.
meme j'ai pas trouvé des équivalences de ses méthodes dans le compact framework
Private Function PictureBoxImageToBytes(ByVal picBox As PictureBox) As Byte()
If (picBox IsNot Nothing) AndAlso (picBox.Image IsNot Nothing) Then
Dim bmp As New Bitmap(picBox.Image)
Dim ms As New System.IO.MemoryStream()
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp)
picBytes = ms.ToArray()
ms.Close()
ms.Dispose()
Return picBytes
Else
Return Nothing
End If
End Function