estoy usando Graphics2D en java para cambiar el tamaño de las imágenes, funciona perfectamente con jpg, png y otros formatos. mi problema son las imágenes animadas GIF, después de cambiar el tamaño de la animación se ha ido!cambio de tamaño de GIF animado manteniendo su animación usando java
aquí está el método estoy usando:
private BufferedImage doResize(int newWidth, int newHeight, double scaleX,
double scaleY, BufferedImage source) {
GraphicsConfiguration gc = getDefaultConfiguration();
BufferedImage result = gc.createCompatibleImage(newWidth, newHeight, source.getColorModel().getTransparency());
Graphics2D g2d = null;
try {
g2d = result.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.scale(scaleX, scaleY);
g2d.drawImage(source, 0, 0, null);
} finally {
if (g2d != null) {
g2d.dispose();
}
}
return result;
}
así, ninguna pista de cómo puedo guardar en el gif animado después de la re-dimensionamiento? Gracias.
impresionante, muchas gracias. Totalmente resuelto y puedo cambiar el tamaño de los gifs y mantener la animación ahora. La única nota es que debe multiplicar las tramas [0] .getDelay() por 10 porque dentro de GifSequenceWriter se divide por 10 (para ajustar desde milisegundos) – Erich
Funciona bien pero toma alrededor de 200MB para gif de tamaño 1MB y 222 cuadros. ¿Hay alguna razón para reducir el uso de memoria? – Vipul