Chargement image dans picture box

cs_milo2009 Messages postés 180 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 8 août 2011 - 3 avril 2006 à 23:30
mohamedfssi Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 16 mai 2008 - 16 mai 2008 à 10:19
Salut,

J'ai developpé une application sous vb2005 pour pda. Le serveur envoie un tableau de bytes au pda.

Celui-ci recup le tab, instancie un flux stream avec, et charge une variable bitmap avec le flux.

Mon probleme est que le chargement de la variable bitmap avec le flux crée un execption éxecution.

Quelqu'un peut me dire comment faire, même si c'est par un autre moyen.

Merci

5 réponses

sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
4 avril 2006 à 11:45
using System.IO;
...

public Bitmap BufferToImage(byte[] buffer)
{
MemoryStream ms = new MemoryStream(buffer);
Bitmap bmp = new Bitmap(ms)
return (bmp);
}

ceic fonctionne parfaitement si tant est que ton buffer est formater correctement et qu'il soit complet (qu'il contienne le header du format de fichier)

par exemple pour un fichier bmp, ceci fonctionne parfaitement :

byte[] buffer = new byte
[(320 * 240 * 3) + 54];
byte[] header = new byte
[] {
0x42, 0x4D, 0x36, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00,
0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xF0, 0x00,
0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

Array
.Copy(header, buffer, header.Length);

MemoryStream ms = new MemoryStream
(buffer);
Bitmap img = new Bitmap
(ms);
ms.Close();

pictureBox1.Image = img;

on créer un buffer de la taille du fichier la place pour les 320 x 240 pixels, qui fonct chacun 3 octets (R, G et B) + 54 octets pour la taille de l'entete du format de fichier

on rempli le header (la j'ai mis en dure pour que tu puisse executer rapidement et constater le fonctionnement) mais il est tres facile de le generer automatiquement en fonction de l'image a instancier.

ensuite on copie le header dans le buffer (qui represente l'image finale) et c'est partit. On aura une image toute noire, mais pas d'exception :)

voila, j'espere avoir pu t'aider.
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
4 avril 2006 à 11:48
arf, pour repondre plus precisement a ta question, si tu as une exception, c'est que ton buffer est mal formater ou que le format d'image que tu envoie n'est pas reconnu par la classe Bitmap.
0
mohamedfssi Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 16 mai 2008
16 mai 2008 à 10:12
svp je veux encore les entete des autres formats jpeg, png, gif comme ce lui de bmp byte[] header = new byte[] {
0x42, 0x4D, 0x36, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00,
0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xF0, 0x00,
0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
je suis pressé par le temps
merci beaucoup a votre aide
0
mohamedfssi Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 16 mai 2008
16 mai 2008 à 10:19
svp je veux encore les entete des autres formats jpeg, png, gif comme ce lui de bmp byte[] header = new byte[] {
0x42, 0x4D, 0x36, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00,
0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xF0, 0x00,
0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
je suis pressé par le temps
merci beaucoup a votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mohamedfssi Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 16 mai 2008
16 mai 2008 à 10:19
svp je veux encore les entete des autres formats jpeg, png, gif comme ce lui de bmp byte[] header = new byte[] {
0x42, 0x4D, 0x36, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00,
0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xF0, 0x00,
0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
je suis pressé par le temps
merci beaucoup a votre aide
0
Rejoignez-nous