Caricare e Visualizzare un'Immagine

 

 

 

 

 

Documentazione:

Inserire immagini o disegnare con ImageIcon
 

 

Prima di poterci lavorare con le immaggini bisogna prima caricarle da un file sull'hardisk o da internet poi visualizzarle. Come test ho pensato ad un semplice programma di carcamento e visualizzazione di un immagine:

 

Classe: CaricaImage

 1 package caricaimage;
 2 
 3 import java.awt.*;
 4 import javax.swing.*;
 5 
 6 public class CaricaImage extends JFrame{
 7     
 8     private MyIcon disegno;
 9      
10     public CaricaImage() {
11         setTitle("Visualizzazione Immagine");
12         setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);        
13         setSize(500, 500);
14         setLocationRelativeTo(null);
15         getContentPane().setBackground(Color.white);
16         
17         disegno = new MyIcon();
18         add(disegno);        
19         
20         setVisible(true);        
21      }
22  
23      public static void main(String [] args){
24          new CaricaImage();
25      }
26   }

 

Classe: MyIcon

 1 package caricaimage;
 2 
 3 import java.awt.Graphics;
 4 import java.awt.Graphics2D;
 5 import java.net.*;
 6 import javax.swing.*;
 7  
 8 class MyIcon extends JComponent{
 9     private ImageIcon icon;
10     public MyIcon(){
11     icon = createImageIcon("/image/mano1.png");
12     }
13     public void paintComponent(Graphics g) {
14        super.paintComponent(g);
15        Graphics2D g2d =(Graphics2D)g;
16         //icon.paintIcon(this, g, 5, 5);
17        icon.paintIcon(this, g2d, 75, 70);
18     }
19 
20     private ImageIcon createImageIcon(String path) {
21         URL imgURL = getClass().getResource(path);
22         if (imgURL != null) {
23             return new ImageIcon(imgURL);
24         } else {
25             System.err.println("Non è possibile trovare il file: " + path);
26           return null;
27        }
28     }
29 }

 

Discussione:

 

Per caricare un file di tipo .gif, .jpg o .png bisogna collocarli nel posto giusto, nel senso che ci permetta di inserirli nel file jar per eseguirlo e distribuirlo. Per questo bisogna creare una direttory che potremo chiamare ad es. image nel nostro progetto. Questa direttory la collocheremo dentro la diirettory "Source Packages".

 

 

Ora che abbiamo sistemato le risorse procediamo con il caricamento.

La classe necessaria è la ImageIcon del package Javax.swing.ImageIcon che ha diversi costruttori ma ha noi può bastare questo:

ImageIcon img = new ImageIcon(URL location);

mi istanzia un oggetto img che rappresenta l'immagine che carica grazie all'URL. Questo è un'oggetto della classe java.net.URL : che si istanzia così: URL imgURL = getClass().getResource(path); il getClass() mi localizza la posizione della classe.

Da questa posizione bisogna dare il percorso finale per raggiungere la nostra immagine. Lo passiamo con la stringa path="/image/mano01.png"

Non dimenticate la / prima di image . URL può ricevere anche un indirizzo di rete es:

https://www.cersil.it/jv/img/mano01.png

Per rendere la cosa un pò più agevole ho scritto un metodo createImageIcon(String path) che esegue anche un controllo sulla buona riuscita del procedimento, per esempio il file potrebbe essere assente o corrotto.

Bene ora abbiamo in icon la nostra immagine non ci resta che visualizzarla. Dobbiamo come al solito riscrivere il metodo paintComponent() (vedi qui) riga 13-18 e poi usare il metodo paintIcon:

icon.paintIcon(this, g2d, 75, 70);

 

Dove this si riferisce alla classe MyIcon g2d è l'oggetto grafico su cui disegnare e 75 70 son la x e la y dell'angolo in alto a sinistra dell'immagine. Voilà.

 

 

Download:

Tipo Var 1 Note

Progetto Netbeans

Mano1.zip

Se non si usa Netbeans basterà utilizzare i sorgenti all'interno della direttory src

Jar file Mano1.jar