Bonjour,
J'ai un soucis avec le fait de transférer des images en les transformant en un tableau de byte.
Le résultat fonctionne à moitié car je récupère bien les bonnes dimensions des images mais elles sont noires.
Merci si vous avez la solution
Le code pour transformer une image en byte[]:
Ici on appelle la méthode pour récupérer les images:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 public byte[] getPhoto(String nom) { Image img = img; /** On crée la nouvelle image */ BufferedImage bufferedImage = new BufferedImage( img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_BGR ); Graphics g = bufferedImage.createGraphics(); g.drawImage(img,0,0,null); g.dispose(); ByteArrayOutputStream out = new ByteArrayOutputStream(); try { ImageIO.write(bufferedImage, "jpg", out); out.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } byte buffer[] = out.toByteArray(); try { out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return (buffer);
Et l'affichage:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 String listPhoto[] = user.getListePhoto(); for(String s : listPhoto) { byte img[] = user.getPhoto(s); InputStream in = new ByteArrayInputStream(img); BufferedInputStream bis=new BufferedInputStream(in); // lire l'image. BufferedImage imageRecup = ImageIO.read(bis); // inserer dans le panel this.fen.corbaAddImage(s, imageRecup); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public ImagePanel(String nom, BufferedImage img) { this.description = nom; BufferedImage bufferedImage = new BufferedImage ( img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_BGR ); this.img = bufferedImage; setPreferredSize(new Dimension(200, 200)); setLayout(null); validate(); repaint(); }
Partager