comment enregister une image dans un repertoire spécifique et les afficher
comment enregister une image dans un repertoire spécifique et les afficher
- Pour sauvegarder une image : ImageIO.write()
- Pour lire une image depuis un fichier: ImageIO.read()
- Pour afficher une image : ça dépend où (Swing, JavaFX, SWT, web, autre ?)
l'image est scannée par le scanner voici le code
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package javaapplication2; import java.io.File; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; import uk.co.mmscomputing.device.scanner.Scanner; import uk.co.mmscomputing.device.scanner.ScannerDevice; import uk.co.mmscomputing.device.scanner.ScannerListener; import uk.co.mmscomputing.device.scanner.ScannerIOException; import uk.co.mmscomputing.device.scanner.ScannerIOMetadata; public class Twain1 implements ScannerListener{ static Twain1 app; Scanner scanner; public Twain1()throws ScannerIOException{ scanner=Scanner.getDevice(); scanner.addListener(this); scanner.acquire(); } public void update(ScannerIOMetadata.Type type, ScannerIOMetadata metadata){ if(type.equals(ScannerIOMetadata.ACQUIRED)){ BufferedImage image=metadata.getImage(); System.out.println("Have an image now!"); try{ String sg="hg"; // File fil = new File("C:\\Users\\pc\\Desktop\\photo"+sg+".jpg"); // File fi=new File("C:\\Users\\pc\\Pictures\\18\\IMAGE"+sg+".jpg"); ImageIO.write(image, "jpg", new File("C:\\Users\\pc\\Pictures\\18\\IMAGE"+sg+".jpg")); java.awt.Image ima11 = image; java.awt.Image imfi; imfi = ima11.getScaledInstance(nouveauarrivée.jLabel9.getWidth(),nouveauarrivée.jLabel9.getHeight(),java.awt.Image.SCALE_SMOOTH ); ImageIcon finalim = new ImageIcon( imfi); // File theDir2 = new File("C:\\Users\\pc\\Desktop\\fonctionnaire"+mmsc_image.jpg+"/"); nouveauarrivée.jLabel9.setIcon(finalim); /* */ }catch(Exception e){ e.printStackTrace(); } }else if(type.equals(ScannerIOMetadata.NEGOTIATE)){ ScannerDevice device=metadata.getDevice(); try{ device.setShowUserInterface(true); device.setShowProgressBar(true); device.setResolution(100); }catch(Exception e){ e.printStackTrace(); } }else if(type.equals(ScannerIOMetadata.STATECHANGE)){ System.err.println(metadata.getStateStr()); if(metadata.isFinished()){ System.exit(0); } }else if(type.equals(ScannerIOMetadata.EXCEPTION)){ metadata.getException().printStackTrace(); } } }
Donc c'est une BufferedImage...
- Le plus simple est de la transformer en Icon puis d'utiliser un JLabel pour l'afficher (JLabel label = new JLabel(new ImageIcon(image))).
Par exemple :
ou, si l'image est grande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 JLabel label = new JLabel(new ImageIcon(image)); JOptionPane.showMessageDialog(null, label);
On peut utiliser la même technique pour afficher dans n'importe quel autre container Swing.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 JLabel label = new JLabel(new ImageIcon(image)); JScrollPane scrollPane = new JScrollPane(label); scrollPane.setPreferredSize(new Dimension(300,300)); JOptionPane.showMessageDialog(null, scrollPane);
Mais la limite c'est que la taille de l'image ne s'adaptera pas à la taille de son container- Pour que la taille s'adapte, soit il y a la manière un peu complexe à base d'évenements et de getScaledImage(), soit, plus simple, d'afficher dans le fond d'un JPanel, en redéfinissant paintComponent. On peut faire un composant par exemple :
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
32
33
34
35
36 public class ImagePanel extends JPanel { private BufferedImage image; public ImagePanel(BufferedImage image) { this.image=image; } public void setImage(BufferedImage image) { this.image=image; repaint(); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); if ( image!=null ) { final double width; final double height; if ( image.getWidth()>image.getHeight() ) { final double scale = (getWidth()*1f)/image.getWidth(); width = getWidth(); height = image.getHeight()*scale; } else { final double scale = (getHeight()*1f)/image.getHeight(); height = getHeight(); width = image.getWidth()*scale; } final double x = (getWidth()-width)/2; final double y = (getHeight()-height)/2; g.drawImage(image, (int)x, (int)y, (int)width, (int)height, this); } } }
C bon c'est résolu merci bq pour ton aide
Oui j 'untilise un buffer des image mais des fois il affiche des fois non je sais pas au est le problm
Je peux difficilement le savoir aussi si je n'ai pas de code...
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117 package javaapplication2; import java.io.File; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.text.SimpleDateFormat; import javax.swing.ImageIcon; import uk.co.mmscomputing.device.scanner.Scanner; import uk.co.mmscomputing.device.scanner.ScannerDevice; import uk.co.mmscomputing.device.scanner.ScannerListener; import uk.co.mmscomputing.device.scanner.ScannerIOException; import uk.co.mmscomputing.device.scanner.ScannerIOMetadata; public class Twain12 implements ScannerListener{ static Twain12 app; Scanner scanner; public Twain12()throws ScannerIOException{ scanner=Scanner.getDevice(); scanner.addListener(this); scanner.acquire(); } public void update(ScannerIOMetadata.Type type, ScannerIOMetadata metadata){ if(type.equals(ScannerIOMetadata.ACQUIRED)){ BufferedImage image=metadata.getImage(); System.out.println("Have an image now!"); try{ // String sg="hg"; String a= nouveauarrivée_1.jTextField1.getText(); String b=nouveauarrivée_1.jTextField4.getText(); a=a.concat(b); String dir1 = nouveauarrivée_1.jComboBox1.getSelectedItem().toString(); System.out.println("cqsf"+dir1); SimpleDateFormat dfo=new SimpleDateFormat("dd-MM-yyyy") ; String datenre=dfo.format(nouveauarrivée_1.jDateChooser4.getDate()); ; String c=""+datenre.charAt(3)+""+datenre.charAt(4);// le moi /* File fil = new File("C:\\Users\\pc\\Pictures\\courrier arrivées\\"+dir1+"/"); System.out.println("cqsf"+dir1); if(!fil.exists()){ fil.mkdir(); System.out.println("cqsf"+dir1); }// File fi=new File("C:\\Users\\pc\\Pictures\\courrier arrivées\\"+dir1+"\\"+c+"/"); if(!fi.exists()) {fi.mkdir(); System.out.println("cqsf"+c); }*/ File fi2=new File("C:\\Users\\pc\\Pictures\\courrier arrivées\\"+dir1+"\\"+c+"\\"+a+".jpg"); //if(!fi2.exists()) //{ fi2.mkdir(); // } // ImageIO.write(image, "jpg", fi2); System.out.println("cqsf"+a); // } ImageIO.write(image, "jpg", fi2); java.awt.Image ima11 = image; java.awt.Image imfi; imfi = ima11.getScaledInstance(nouveauarrivée_1.jLabel9.getWidth(),nouveauarrivée_1.jLabel9.getHeight(),java.awt.Image.SCALE_SMOOTH ); ImageIcon finalim = new ImageIcon( imfi); // File theDir2 = new File("C:\\Users\\pc\\Desktop\\fonctionnaire"+mmsc_image.jpg+"/"); nouveauarrivée_1.jLabel9.setIcon(finalim); } catch(Exception e){ e.printStackTrace(); } }else if(type.equals(ScannerIOMetadata.NEGOTIATE)){ ScannerDevice device=metadata.getDevice(); System.out.println("erreur ndfn"); try{ device.setShowUserInterface(true); device.setShowProgressBar(true); device.setResolution(100); // BufferedImage image=metadata.getImage(); System.out.println("Have an image nowklll!"); }catch(Exception e){ e.printStackTrace(); } }else if(type.equals(ScannerIOMetadata.STATECHANGE)){ System.err.println(metadata.getStateStr()); System.out.println("errfinnnnn"); if(metadata.isFinished()){ System.out.println("errf"); System.exit(0); } }else if(type.equals(ScannerIOMetadata.EXCEPTION)){ metadata.getException().printStackTrace(); System.out.println("erreur finnnnn"); } } }
il n'affiche aucun erreur
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager