2013-05-07 3 views
0

아래 코드를 사용하여 이미지를 업로드하십시오.이미지 크기 증가

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
BufferedImage img = ImageIO.read(new File("abc.tiff")); 
ImageIO.write(img, "tiff", baos); 
img.flush(); 
img=null; 

byte[] bytes2 = baos.toByteArray(); 
if(baos != null) { 
    baos.flush(); 
    baos.close(); 
} 

System.out.println("bytes2 size::::" + bytes2.length); 

원본 TIFF 이미지 크기는 119kb이고 이미지의 바이트를 인쇄하면 800974 바이트 길이가됩니다.

왜 이미지 크기가 커지나요? 무엇이 문제가 될 수 있습니까

답변

0

분명히 abc.tiff 파일이 보관되어 있습니다 (TIFF 형식에는 보관 된 버전이 있음). img에는 보관되지 않은 압축되지 않은 데이터가 포함되어 있습니다. 그래서 출력은 119 대신 782 kb입니다.

+0

사실이 아닙니다. 'bytes2' 크기는 (다시) 인코딩 된 tiff 이미지입니다. – leonbloy

+0

@leonbloy 글쎄, 당신과 내 대답의 차이는 보이지 않습니다. 오해가있을 수 있습니다 :'아카이브 된 '용어로 나는'압축 된'것을 의미했습니다. 내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다. – Andremoniy

+1

'img'는 raw 이미지를 포함하고 있기 때문에 (따라서 크기는 더 크다), OP는 그것을 측정하지 않고, img를 새로운 TIFF (메모리, baos)로 다시 압축하고 있습니다. 측정. – leonbloy

0

TIFF 형식은 대부분의 이미지 형식과 마찬가지로 많은 이미지 모드와 압축 전략을 지원합니다. ImageIO.write()은 최적화시 매우 영리하지 않거나 약간의 조정이 필요할 수 있습니다. 예 : here을 참조하십시오.