Afficher une image sur une form.

Résolu
Signaler
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
-
Yop à tous,

Voila , j'utilise une méthode GetPicture() qui me renvoie une image au format BYTE stream . Je me demandai comment a partir de cette variable de type BYTE stream pourrai-je afficher l'image dans une JForm (Attention l'image ne doit pas prendre tt la JForm) ?

Meric d'avance.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]

7 réponses

Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

si tu as  les pixels de ton image tu peux reconstruire un
objet Image/BufferedImage (*) et le dessiner dans la méthode
paintComponent du container (pas directement dans la JFrame) ou encore
le donner à un JLabel (il se charge du reste)

pour illustrer
l'exemple du JLabel regarde dans mes postes du forum (ceux qui parlent
d'une image en background j'y utilise cette méthode)

(*)
exemple 1
byte [] pixels = ....
Image image = Toolkit.getDefaultToolkit().createImage(pixels);

exemple 2 (j'utilise Image pour rester en accord avec la méthode 1)
byte [] pixels = ....
Image image = null;
ByteArrayInputStream bis = new ByteArrayInputStream(pixels);
try {
  image = ImageIO.read(bis);
}
catch (Exception e) { /* erreur */ }
finally {
  try { bis.close(); }
  catch (Exception e) { /* erreur */ }
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

juste une précision :
il est préférable d'utiliser la méthode 2, il me semble que les méthodes de Toolkit sont asynchrones, donc l'image est chargé quand elle l'est... l'avantage de la méthode 2 est que si il y a un problème sur le chargement de l'image tu seras directement au jus ^^

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

" j'utilise une méthode GetPicture() "
>> gné ? quel objet ?

"qui me renvoie une image au format BYTE stream"
>> BYTE en java ? byte ou son wrapper Byte je veux bien mais BYTE...

"JForm"
>> Tu le sort d'où lui ?

Une question : tu fais du vrai java ou sa pâle copie sauce MS genre J++ ou J# ? si tu fais pas de vrai java dsl mais il y a très peu de chances que quelqu'un t'aide vu qu'ici c'est plus java sauce sun, et qu'il y a très peu de dev J++/J# qui passent dans le coin...

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Oui par jForm, je sous entendai Jframe , l'habitude de switcher les langages mdr .

Ben en fait tu as mis le doigt dessus... le manque de documentation. Car GetPicture est une méthode déjà bytecoder mdr . Et dans la doc de ces API il me mettent simplement :

GetPicture(...) : Picture, in JPEG format. Type de variable : BYTE stream . Taille max 10 000.Je ne fait que lire ce qui est mis :s

Oui c'est bien du pure Java lol C'est juste que j'utilise un .jar avec des fonctions déjà tte faite et que la doc c'est pas ça.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Merci beaucoup pour ton aide :)

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
J'ai trouvé plus simple :

ImageIcon ic = new ImageIcon(userPicture.getData()); // get data renvoie byte[]
pnUser.setPicture(ic);

Et ma méthode setPicture dans mon panel :

public void setPicture(ImageIcon fImage){
        jLabPicture.setIcon(fImage);  
    }

Ca marche nickel :)

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

j'avais oublié ce constructeur ^^
dans ce cas si tu utilises ImageIcon fait comme suit :
ImageIcon ic = new ImageIcon(userPicture.getData());
ic.getImage();//En appelant cette méthode tu vas t'assurer que l'image est complètement chargée
pnUser.setPicture(ic);

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO