2010-01-28 68 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