Comprimere e convertire immagini in JPG
DOMANDA:
Come convertire un'immagine in JPG in Java?
RISPOSTA:
Java mette a disposizione diversi oggetti che permettono la conversione di un'immagine in JPG/JPEG e anche la regolazione della compressione (e quindi della qualità).
Guardiamo l'esempio TestCompressione, opportunamente commentato per capire tutti i passaggi da intraprendere:
package immagini; import java.awt.image.*; import java.io.*; import java.util.Iterator; import javax.imageio.*; import javax.imageio.stream.FileImageOutputStream; import javax.swing.JFileChooser; public class TestCompressione { public static void main(String args[]) throws Exception { BufferedImage immagine = null; // Seleziono il file con finestra di dialogo JFileChooser fileScelto = new JFileChooser("C:\\"); int selezione = fileScelto.showDialog(null, "Seleziona il file da aprire"); if(selezione == JFileChooser.APPROVE_OPTION) immagine = ImageIO.read(fileScelto.getSelectedFile()); System.out.println("Il file selezionato è: "+fileScelto.getSelectedFile()); System.out.println("Inizio procedure compressione"); // recupero gli ImageWriters che possono convertire in jpeg Iterator<ImageWriter> it = ImageIO.getImageWritersByFormatName("jpg"); ImageWriter jpgWriter = it.next(); // prendo il primo disponibile ImageWriteParam parametri = jpgWriter.getDefaultWriteParam(); parametri.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); parametri.setCompressionQuality(0.7f); // Imposto la qualità di compressione a 0.7 (0 massima compressione) // scrivo in output l'immagine risultante FileImageOutputStream out = new FileImageOutputStream(new File("C:\\imgCompressa.jpg")); jpgWriter.setOutput(out); jpgWriter.write(null, new IIOImage(immagine, null, null), parametri); jpgWriter.dispose(); out.close(); System.out.println("Fine procedure compressione, il file è stato creato"); } }
L'output sarà molto semplice:
Il file selezionato è: C:\immagine.bmp
Inizio procedure compressione
Fine procedure compressione, il file è stato creato
Inizio procedure compressione
Fine procedure compressione, il file è stato creato
E ovviamente in C:\ sarà generato il file imgCompressa.jpg.
Java mette a disposizione diversi ImageWriters (non solo JPG) come ad esempio BMP, PNG e GIF.
Per ulteriori informazioni a riguardo rimando alla documentazione ufficiale.
Per approfondimenti sul funzionamento e sull'utilizzo del JFileChooser vi consiglio la lettura di questo post.
Commenti
Posta un commento