2013-05-27 14 views
1

我是新來使用JAI和我寫了這個簡單的代碼,上傳圖片。此代碼工作正常jpeg秒,但會導致錯誤png S和gif秒。JAI錯誤上傳PNG和GIF文件時

下面是代碼:

ByteArraySeekableStream byteArraySeekableStream = new ByteArraySeekableStream(content.getData()); 
ParameterBlock pb = new ParameterBlock(); 
pb.add(byteArraySeekableStream); 
BufferedImage originalImage = JAI.create("jpeg", pb).getAsBufferedImage(); 

這是錯誤:

Error: Cannot decode the image for the type : 
Occurs in: com.sun.media.jai.opimage.CodecRIFUtil 
java.io.IOException 
     at com.sun.media.jai.codecimpl.CodecUtils.toIOException(CodecUtils.java:76) 
     at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:48) 
     at com.sun.media.jai.opimage.CodecRIFUtil.create(CodecRIFUtil.java:88) 
     at com.sun.media.jai.opimage.JPEGRIF.create(JPEGRIF.java:43) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:601) 
     at javax.media.jai.FactoryCache.invoke(FactoryCache.java:122) 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1674) 
     at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:473) 
     at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:332) 
     at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:819) 
     at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867) 
     at javax.media.jai.RenderedOp.getColorModel(RenderedOp.java:2242) 
     at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2498) 
     at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2546) 

任何人的意見?

+0

嘗試將'BufferedImage originalImage = JAI.create(「jpeg」,pb).getAsBufferedImage();'改爲'BufferedImage originalImage = JAI.create(「png」,pb).getAsBufferedImage();'和'gif'分別。 – neo108

回答

3

在正確的文件類型的BufferedImage通行證,它應該工作。

PNG
BufferedImage originalImage = JAI.create("png", pb).getAsBufferedImage();

GIF
BufferedImage originalImage = JAI.create("gif", pb).getAsBufferedImage();

而且看看this answer得到的文件擴展名。

+0

Doh!謝謝@ neo108,工作! – beebris

+0

不客氣@beebris。 – neo108