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