2013-10-01 25 views
0

原因是什麼javax.imageio.IIOException: Sample size must be <= 8。 我嘗試寫IIOImage中這樣爲什麼IIOImageException java顯示

public static byte[] compressImage(BufferedImage imageSource, float quality) throws IOException { 
    Iterator i = ImageIO.getImageWritersByFormatName("jpeg"); 

    ImageWriter writer = (ImageWriter) i.next(); 
    ImageWriteParam iwp = writer.getDefaultWriteParam(); 
    iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); 
    iwp.setCompressionQuality(quality); 

    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    ImageOutputStream output = ImageIO.createImageOutputStream(bos); 
    writer.setOutput(output); 
    IIOImage image = new IIOImage(imageSource, null, null); 
    writer.write(null, image, iwp); 
    writer.dispose(); 

    return bos.toByteArray(); 
} 

但當ImageWriter的嘗試寫IIOImage中,異常被顯示。我不知道有什麼問題,但如果圖像尺寸很大,沒有任何異常顯示和運行完美,但是如果圖像尺寸很小,則顯示javax.imageio.IIOException: Sample size must be <= 8。 Iam對我的不好英語感到抱歉,謝謝你對我的問題的回覆。哦,這裏是完整的跟蹤

Caused by: javax.imageio.IIOException: Sample size must be <= 8 
at com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeOnThread(JPEGImageWriter.java:494) ~[na:1.7.0_21] 
at com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(JPEGImageWriter.java:360) ~[na:1.7.0_21] 
at com.daksa.cms.util.ImageCompressor.compressImage(ImageCompressor.java:37) ~[CmsServer-ejb_jar/:na] 
at com.daksa.cms.util.ImageCompressor.compressImageToSize(ImageCompressor.java:47) ~[CmsServer-ejb_jar/:na] 
at com.daksa.cms.bean.PersoEventBean.resizeImage(PersoEventBean.java:292) ~[CmsServer-ejb_jar/:na] 
... 85 common frames omitted 

回答

1

可能是你應該使用

com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageWriter 

類渲染圖像。請參閱THIS鏈接。您還可以看看下面的例子:

  1. http://www.codingtiger.com/questions/java/ImageIO-not-able-to-write-a-JPEG-file.html
  2. ImageIO not able to write a JPEG file
+0

在哪裏我可以下載這個庫? – Yusuf1494

+1

從[這裏](http://grepcode.com/snapshot/repo1.maven.org/maven2/com.sun.media/jai_imageio/1.1/)。你在使用OpenJDk嗎? –

+0

感謝您的幫助,我解決了這個問題 – Yusuf1494

0

知道,我知道的問題,IAM遺憾的圖像格式是錯誤的,它應該是.JPG