2010-01-28 81 views
0

我试图构建一个应用程序,它可以将图像从任何类型的图像上进行编码和调整大小,并将其存储为JPEG格式。我使用kind of weird jpeg并用于测试。Java JAI JPEG图像编码RuntimeException

由于某些原因,JAI无法将此图像渲染为JPEG图像。我使用下面的代码:

private SeekableStream seekableStream; 
... 
public RenderedOp builRenderedOp(byte[] bytes) { 
    seekableStream = SeekableStream.wrapInputStream(new ByteArrayInputStream(bytes),true); 
    RenderedOp img = JAI.create("stream", seekableStream); 
    return img ; 
} 
... 
public void writeImageToJPEG(OutputStream out,RenderedOp image,float quality) throws IOException { 
    JPEGEncodeParam encodeParam = new JPEGEncodeParam(); 
    encodeParam.setQuality(quality); 

    ImageEncoder encoder = ImageCodec.createImageEncoder("JPEG", out, encodeParam); 

    encoder.encode(image); 
} 

encoder.encode(image)一个RuntimeException被抛出。

java.lang.RuntimeException: - Unable to render RenderedOp for this operation. 
    at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:838) 
    at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:878) 
    at javax.media.jai.RenderedOp.getWidth(RenderedOp.java:2190) 
.... 

有什么建议吗?

回答

1

A RuntimeException是异常的包装。尝试使用getCause打印actaul异常的堆栈跟踪被抛出:

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/RuntimeException.html

也有可能这个JPEG文件不被库所使用的支持,如libjpeg什么有关JPEG 2000或者某些不合规格的东西。

+0

http://twitter.com/kristopherives/status/8323842474 – 2010-01-28 14:17:16

+0

感谢您的回复,但问题与其他主题有关。我提出的代码是可以的。 – Norberto 2010-01-29 10:19:40

+0

你是如何解决JAI问题的? – schoenk 2017-02-20 08:53:49