2013-02-24 4 views
3

나는 내가 자바 크기를 조정하기를 원하지만 전통적인 방법을 사용하려고 할 때, 작동하지 않는 애니메이션 .GIF 이미지를 가지고 : 나는를 표시하려고크기 조정 .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

imgscalr이라는 자바 용 간단한 이미지 스케일링 라이브러리가 있습니다.

라이브러리는 이미지 스케일링에 대한 몇 가지 다른 접근법을 구현하고 요청할 경우 가장 적합한 접근 방식을 선택하거나, 가장 빠른 또는 최상의 검색 방식을 제공합니다.

사용 방법은 간단하지만 많은 정적 메서드입니다. 가장 간단한 사용 사례는 다음과 같습니다

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

모든 작업이 경우 당신은 키가 기본적으로 넓은 200 개 픽셀의 경계와 200 개 픽셀 내에서 이미지 크기를 다시 imgscalr을 요구하고 있으므로, 이미지의 원래 비율을 유지 그것이 지정되지 않았기 때문에 자동으로 가장 잘 찾고 가장 빠른 방법을 선택합니다.

+2

다른 이미지에도 좋지만 '.GIF'이미지가 수정되었습니다. ( – Giudark