tôi đang sử dụng Graphics2D trong java để thay đổi kích thước hình ảnh, nó hoạt động hoàn hảo với jpg, png và các định dạng khác. vấn đề của tôi là hình ảnh GIF động, sau khi định lại kích thước hoạt ảnh đã biến mất!thay đổi kích thước GIF động trong khi vẫn giữ hoạt ảnh bằng cách sử dụng java
ở đây là phương pháp đang sử dụng:
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;
}
như vậy, bất kỳ manh mối như thế nào tôi có thể giữ trên gif động sau khi tái định cỡ? Cảm ơn.
Awesome, cảm ơn rất nhiều. Hoàn toàn giải quyết nó và tôi có thể thay đổi kích cỡ gifs và giữ cho hình ảnh động ngay bây giờ. Chỉ cần lưu ý là bạn nên nhân khung [0] .getDelay() bởi 10 vì bên trong GifSequenceWriter nó chia cho 10 (để điều chỉnh từ mili giây) – Erich
Nó hoạt động tốt nhưng mất khoảng 200MB cho gif kích thước 1MB và 222 khung. có bất kỳ lý do gì để giảm mức sử dụng bộ nhớ không ?? – Vipul