2013-02-24 3 views
3

У меня есть анимированный .GIF образ, который я хочу, чтобы изменить размер в Java, но при попытке использовать традиционные методы, это не похоже на работу:Resize .GIF изображение

ImageIcon esclamativoMid = null; 
//... search my file... 
if(name.equalsIgnoreCase("esclamativo.gif")) 
    esclamativoMid = new ImageIcon(f.getAbsolutePath()); 
myEnumMap.put(Resolution.MID, esclamativoMid); 

for(Resolution r: Resolution.values()){ 
    if(r != Resolution.MID){ 
     int w = esclamativoMid.getIconWidth()*(r.ordinal()+1)/2; 
     int h = esclamativoMid.getIconHeight()*(r.ordinal()+1)/2; 
     BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); 
     Graphics2D g2d = (Graphics2D)bi.createGraphics(); 
     g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY)); 
     g2d.drawImage(esclamativoMid.getImage(), 0, 0, w, h, null); 
     myEnumMap.put(r, new ImageIcon(bi)); 
    } 
} 

Когда я пытаюсь отобразить изображение с помощью этого кода:

new JLabel(myEnumMap.get(currentRes)); 

Я получаю .GIF только если Resolution.MID (IE изображение загружается непосредственно из файла).

ответ

1

Существует простая библиотека масштабирования изображений для Java под названием imgscalr.

В библиотеке реализованы несколько различных подходов к масштабированию изображений и вы сможете выбрать наиболее оптимальный для вас подход, если вы попросите его, или предоставите вам самый быстрый или лучший вид (если вы попросите об этом).

Использование мертво-простое, просто куча статических методов. Простейший вариант использования является:

BufferedImage scaledImage = Scalr.resize(myImage, 200); 

Все операции сохраняются оригинальные пропорции изображения, поэтому в этом случае вы просите imgscalr, чтобы изменить размер вашего изображения в пределах границ 200 пикселей в ширину и 200 пикселей в высоту и по умолчанию он автоматически выберет наилучший и быстрый подход для этого, поскольку он не был указан.

+2

Я пробовал, кажется хорошим для другого изображения, но изображение '.GIF' исправлено :( – Giudark