Ciao Vorrei sapere se c'è un modo in Java per ridurre la dimensione di un'immagine (utilizzare qualsiasi tipo di compressione) che è stata caricata come BufferedImage e che verrà salvata come un PNG.come comprimere un'immagine PNG utilizzando Java
Forse una specie di png imagewriteparam? Non ho trovato nulla di utile quindi sono bloccato.
heres un esempio di come l'immagine viene caricata e salvato
public static BufferedImage load(String imageUrl) {
Image image = new ImageIcon(imageUrl).getImage();
bufferedImage = new BufferedImage(image.getWidth(null),
image.getHeight(null),
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2D = bufferedImage.createGraphics();
g2D.drawImage(image, 0, 0, null);
return bufferedImage;
}
public static void storeImageAsPng(BufferedImage image, String imageUrl) throws IOException {
ImageIO.write(image, "png", new File(imageUrl));
}
"Qualsiasi tipo di compressione" include la compressione con perdita? Perché quindi memorizzare l'immagine in formato JPEG potrebbe far risparmiare molto spazio. –
PNG è un formato di compressione senza perdita di dati (purché l'immagine sorgente non usi più di 8 bit per canale: se si converte, per esempio, un'immagine RGB a 48 bit in PNG, il PNG diventa lossy), quindi non è possibile guadagna molto Esistono tuttavia molti strumenti che producono PNG molto più piccoli del solito e sono particolarmente utili se avete bisogno dei vostri PNG per dispositivi con limitazioni di memoria: PNGOUT è uno strumento di questo tipo ed è stato programmato da uno dei programmatori migliori di sempre: http: //advsys.net/ken/utils.htm#pngout – SyntaxT3rr0r
giusto, come ha chiesto Joachim, nessuna compressione con perdita di dati, solo ridurre la dimensione del file immagine come usato da zip e così via e non ci dovrebbero essere strumenti esterni come PNGOUT, quindi potrebbe essere una sorta di libreria che supporta e ImageWriteParam per PNG come JPEGImageWriteParam, guardando xmlgraphics-commons 1.3.1 atm. Scusate se mi sto confondendo in alcune parti sono ancora un novizio, solo che le risposte potrebbero aiutarmi o ispirare altre persone con un problema simile. Grazie per i suggerimenti finora. – ubernoob