2017-03-01 14 views
0

하이퍼 링크에서 많은 (수백 개의) 이미지가 참조되는 보고서 템플릿을 디자인하려고합니다. 나는 문서가 25MB에서 (이메일 및 다른 이유로)가되고 싶어요, 그래서 나는 다음과 같은 코드를 사용하여 이미지를 압축하기 위해 노력하고있어 :apache의 이미지 POI XWPF 문서의 색상 왜곡이 있습니다.

//I get the input stream 
InputStream ins = entity.images.getInputStream(img); 
BufferedImage bufImg = ImageIO.read(ins); 

//I compress the image 
ByteArrayOutputStream compressed = new ByteArrayOutputStream(); 
ImageOutputStream outputStream = ImageIO.createImageOutputStream(compressed); 
ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next(); 
ImageWriteParam jpgWriteParam = jpgWriter.getDefaultWriteParam(); 
jpgWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); 
jpgWriteParam.setCompressionQuality(0.98f); 
jpgWriter.setOutput(outputStream); 
jpgWriter.write(null, new IIOImage(bufImg, null, null), jpgWriteParam); 
jpgWriter.dispose(); 
byte[] jpegData = compressed.toByteArray(); 

//I attempt to add the compressed image 
imgRun.addPicture(new ByteArrayInputStream(jpegData), Document.PICTURE_TYPE_JPEG,"text", Units.toEMU(newWidth), Units.toEMU(newHeight)); 

이미지는 문서에 쓸 수 있지만 자신의 색이 왜곡됩니다. 내 경우에는 모두 붉은 색/오렌지색입니다. 이/원인을 일으키는 원인에 대한 아이디어가 있습니까?

+1

답변이 없지만 파일에 JPG를 사용하고 PNG로 추가하는 것처럼 보입니다. 코드가 맞습니까? – stdunbar

+0

나는 게시물을 고쳤다. PICTURE_TYPE_JPEG라고해야했다. 그러나 문제는 지속됩니다. 어떤 아이디어? –

+0

이미지가 문서에 들어가기 전에 확인됩니까? – stdunbar

답변

0

일부 이미지는 .gif라는 것이 문제인 것처럼 보입니다.

에 관계없이 압축하기 전에 먼저 모든 이미지를 .jpg로 변환하여 문제를 해결했습니다. 아래를 참조하십시오 :

BufferedImage newBufferedImage = new BufferedImage(bufImg.getWidth(), 
      bufImg.getHeight(), BufferedImage.TYPE_INT_RGB); 
newBufferedImage.createGraphics().drawImage(bufImg, 0, 0, Color.WHITE, null);