Java JAI JPEG изображение кодирует RuntimeException - PullRequest
0 голосов
/ 28 января 2010

Я пытаюсь создать приложение, которое кодирует и изменяет размер изображения для любого типа изображения и сохраняет его в формате JPEG.

Я использую этот вид странного JPEG и использую для тестирования.

По какой-то причине 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) a 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 Ответ

1 голос
/ 28 января 2010

A RuntimeException - оболочка для исключений. Попробуйте использовать getCause, чтобы напечатать трассировку стека создаваемого исключения actaul:

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

Также возможно, что этот файл JPEG не поддерживается используемой библиотекой, такой как libjpeg или что-то связанное с JPEG 2000 или что-то некондиционное.

...