Post

Visualizzazione dei post con l'etichetta immagini

Java Application per ridimensionamento immagine in proporzione

DOMANDA: Come posso ridimensionare un'immagine rispettando le sue proporzioni? RISPOSTA: Di seguito una breve guida per creare una piccola Java Application che visualizza un'immagine ridimensionata rispettando le sue proporzioni.  L'applicazione inoltre salva l'immagine su disco attraverso il metodo saveImage() . Il codice utilizza il metodo getScaledDimension()  riportato su StackOverflow . import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.WindowConstants; public class ImageResizeProportionally { public static void main(String[] args) { String path_immagine = "C:\\mia_immagine.jpg"; BufferedImage srcImage; try {

Codifica e decodifica di un'immagine in Base64

DOMANDA: Come si effettua la codifica in Base64 di un'immagine in Java? RISPOSTA: Differentemente da quanto visto per la codifica Base64 delle stringhe , per le immagini abbiamo alcune varianti dovute soprattutto alla conversione della stessa in un array di byte . Scarichiamo la classe Base64 di Apache Commons contenuta nel pacchetto  commons-codec-1.2.jar . Il codice nell'esempio mostra come convertire in Base64  un'immagine JPG, ma è adattabile anche ad altri formati: package base64; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import org.apache.commons.codec.binary.Base64; public class Base64ImgConversion { public static void main(String[] args) throws IOException { BufferedImage immagine = ImageIO.read(new File("C:\\immagine.jpg")); ByteArrayOutputStream byteArrOS = new ByteArrayOutputStream(); ImageIO.write(imm

Caricamento di immagini multiple

DOMANDA: Come posso caricare immagini multiple in un'interfaccia grafica Java? RISPOSTA: Prendendo spunto dalla domanda fatta nel post Caricamento di immagini , vi mostrerò ora come caricare immagini multiple . Le differenze sono sostanzialmente nella creazione di un oggetto Immagine dedicato ed alla gestione di un numero dinamico di immagini.  Vediamo la nuova classe Immagine.java : package immagini; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class Immagine { private static long count = 0; private long id ; private BufferedImage image ; private int x ; private int y ;     // "imagePath" è il path dell'immagine da caricare     // x e y sono le coordinate dell'immagine public Immagine(String imagePath, int x, int y) { this .image = loadImage(imagePath); this . x = x; this . y = y; this . id = count ++;

Caricamento di immagini

DOMANDA: Come posso caricare delle immagini in un'interfaccia grafica Java? RISPOSTA: Per caricare le immagini in un'interfaccia Java, è possibile utilizzare le classi JFrame , JPanel e  BufferedImage per effettuare il load vero e proprio. Questa soluzione è molto più adeguata e flessibile del caricamento di icone descritto in questo post .  Nell'esempio presentato vedremo infatti come posizionare l'immagine tramite variabili e come renderizzarla usando l'oggetto Graphics  che fornisce numerosi m etodi ed effetti applicabili alle BufferedImage (ad esempio la rotazione, traslazione, effetto trasparenza, e tanti altri). Cominciamo col creare un Pannello.java : package immagini; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import javax.swing.JPanel; public class Pannello extends JPanel {

Stampa di immagini

DOMANDA: Come posso effettuare la stampa su carta di immagini utilizzando Java? RISPOSTA: Possiamo cambiare di poco il codice che abbiamo utilizzato in questo altro post ed essere in grado di stampare immagini su fogli di carta A4. package stampa; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.awt.print.PageFormat; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.io.File; import javax.imageio.ImageIO; public class Stampa implements Printable {     public Stampa() {          try {             PrinterJob pj = PrinterJob.getPrinterJob();             pj.setJobName( "TestStampa" );             pj.printDialog();             pj.setPrintable( this );             pj.print();         } catch (PrinterException e) {             e.printStackTrace();         }     }     public i