我使用Java中的Graphics2D来调整图像大小,它适用于JPG,PNG和其他格式。 我的问题是动画GIF图像,重新调整大小后动画不见了!调整动画GIF的大小,同时保持它的动画使用java
这里的方法我用:
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;
}
所以,任何线索我怎样才能保持对gif动画调整大小后? 谢谢。
真棒,非常感谢。完全解决了它,我可以调整GIF动画并保持动画。唯一值得注意的是你应该将帧[0] .getDelay()乘以10,因为在GifSequenceWriter中它除以10(从毫秒调整) – Erich 2014-12-29 15:57:39
它工作良好,但对于1MB和222帧的大小的gif需要大约200MB。有没有什么为什么要减少内存使用量? – Vipul 2016-04-18 15:02:14