Hola, me gustaría saber si hay alguna forma en Java para reducir el tamaño de una imagen (utilizar cualquier tipo de compresión) que se cargó como una Imagen Buffered y se va a guardar como PNG.cómo comprimir una imagen PNG usando Java
Tal vez algún tipo de png imagewriteparam? No encontré nada útil, así que estoy atascado.
aquí está una muestra de cómo se carga la imagen y se guarda
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));
}
¿Hay "algún tipo de compresión" que incluya compresión con pérdida? Porque entonces, almacenar la imagen en formato JPEG puede ahorrar mucho espacio. –
PNG es un formato de compresión sin pérdida (siempre que la imagen de origen no use más de 8 bits por canal: si convierte, por ejemplo, una imagen RGB de 48 bits en PNG, PNG se vuelve con pérdida) por lo tanto, no puede ganar mucho Sin embargo, hay muchas herramientas que producen PNG mucho más pequeñas que lo habitual, y son particularmente útiles si necesita sus PNG para dispositivos con memoria limitada: PNGOUT es una herramienta así y fue programado por uno de los mejores programadores de todos los tiempos: http: //advsys.net/ken/utils.htm#pngout – SyntaxT3rr0r
a la derecha, como pidió Joachim, sin compresión con pérdida, solo reduce el tamaño del archivo de imagen como lo usa zip y eso y no debería haber herramientas externas involucradas como PNGOUT, entonces podría ser algún tipo de biblioteca que admita ImageWriteParam para PNG como JPEGImageWriteParam, mirando xmlgraphics-commons 1.3.1 atm. Lo siento si me estoy volviendo confuso en algunas partes todavía soy un novato, solo que las respuestas podrían ayudarme o inspirar a otras personas con un problema similar. Gracias por las sugerencias hasta ahora. – ubernoob