Domanda

Sto cercando di creare un'applicazione che codifica e ridimensionare le immagini fuori qualsiasi tipo di immagine e memorizzarla come file JPEG.

Io uso questo di jpeg strano e utilizzare per il test.

Per qualche ragione JAI non può rendere questa immagine in formato JPEG. Io uso il seguente codice:

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);
}

su encoder.encode(image) un RuntimeException è gettato.

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)
....

Qualche suggerimento?

È stato utile?

Soluzione

Un RuntimeException è un wrapper per le eccezioni. Provare a utilizzare il getCause per stampare la traccia dello stack dell'eccezione actaul essere gettato:

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

E 'possibile anche questo file JPEG non è supportato dalla libreria in uso, come ad esempio libjpeg o qualcosa legato al JPEG 2000 o qualcosa di out-of-spec.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top