2013-05-27 4 views
1

JAI를 처음 사용하고이 간단한 코드를 작성하여 이미지를 업로드했습니다. 이 코드는 jpeg에 대해서는 정상적으로 작동하지만 pnggif에는 오류가 발생합니다.PNG 및 GIF 파일을 업로드 할 때 JAI 오류가 발생했습니다.

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) 

수있는 사람의 조언 :

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

이 오류는 다음과 같습니다

코드인가?

+0

'png'에 대해 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

관련 문제