2011-02-23 5 views
2

ImageIO.write(bufferedimage_dest,"png",new File(filedest));은 jpg (투명도 색상 없음) 파일 대신 png를 쓰나요?ImageIO.write() 메서드 및 png

추가 :

static BufferedImage createResizedCopy(Image originalImage, 
       int scaledWidth, int scaledHeight, 
       boolean preserveAlpha) 
    { 
     System.out.println("resizing..."); 
     int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB; 
     BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType); 
     Graphics2D g = scaledBI.createGraphics(); 
     if (preserveAlpha) { 
       g.setComposite(AlphaComposite.Src); 
     } 
     g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); 
     g.dispose(); 
     return scaledBI; 
    } 


    public static void scale(String src, int width, int height, String dest) 
    throws IOException { 
    BufferedImage bsrc = ImageIO.read(new File(src)); 
    BufferedImage bdest = 
     new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 
    bdest = createResizedCopy(bsrc, width, height, false); 
    ImageIO.write(bdest,"png",new File(dest)); 
    } 

추가 : 음, main() 함수에서 내가

ScaleJPG.scale((args[0],Integer.parseInt(args[1]),Integer.parseInt(args[2]), args[3]);); 

대신

ScalePNG.scale((args[0],Integer.parseInt(args[1]),Integer.parseInt(args[2]), args[3]);); 

라고했습니다

ScaleJPG는이 폴더의 이전 클래스와 비슷합니다.

메모장을 삭제하고 IDE 만 사용해야합니다. 삭제할 질문.

+0

JPG는 투명성을 지원하지 않습니다. 귀하가 제출 한 변수를 보여줄 수 있습니까? – Serhiy

답변

0

createResizedCopy 기능에 g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); 전에

g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); 

를 추가합니다.

+0

나는 아직도 동일한 jpg를 추가했다. – blue

+0

나는 그 라인이 추가 된 코드를 테스트했고 나에게 도움이되었다. 'scale ("test.png", 100, 100, "test_resized.png");'.. 매개 변수를 올바르게 전달했는지 확인한다 .. 그리고 한 가지 더, 내 test.png, 일부 투명 영역과 함께 온다. – Serhiy

0

의 이미지 유형이 당신의 버퍼 이미지가 필요합니다. 이 간단한 테스트 클래스는 그것을 확인 :

import java.awt.image.*; 
import java.io.File; 
import javax.imageio.*; 

public class Main 
{ 
    public static void main (String [] args) throws Exception 
    { 
     BufferedImage bi = new BufferedImage(100,100,BufferedImage.TYPE_INT_ARGB); 
     ImageIO.write(bi, "png", new File("test.png")); 
    } 
} 

컴파일하고 실행 예상 단지로 .PNG 파일을 생성합니다

$ javac Main.java 
$ java Main 
$ file test.png 
test.png: PNG image, 100 x 100, 8-bit/color RGBA, non-interlaced 
$