Estou precisando comprimir o maximo possivel imagens png, independente se vai perder ou nao a qualidade.
Hoje uso esse metodo para gravar em disco, porém ele nao diminue a qualidade. Não achei nenhuma classe para tratar disso.
[code]
Image imagem = null;
try {
imagem = ImageIO.read(new File(caminhoImg));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int new_w , new_h ;
if (imagem.getWidth(null) > imagem.getHeight(null)){
new_w = 180;
new_h = 160;
}else if(imagem.getWidth(null) < imagem.getHeight(null)){
new_w = 150;
new_h = 160;
} else {
new_w = 160;
new_h = 160;
}
imagem = imagem.getScaledInstance(new_w, new_h, Image.SCALE_FAST);
BufferedImage new_img = new BufferedImage(new_w, new_h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = new_img.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(imagem, 0, 0, new_w, new_h, null);
try {
ImageIO.write(new_img, "PNG", new File(caminhoImg));
} catch (IOException e) {
e.printStackTrace();
}
}[/code]
agradeço qualquer ajuda.