Question

Je suis en train de construire une application qui code et redimensionner les images de tout type d'image et de le stocker au format JPEG.

J'utilise cette un peu bizarre jpeg et utiliser pour les tests.

Pour une raison quelconque ne peut pas rendre JAI cette image au format JPEG. J'utilise le code suivant:

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

sur encoder.encode(image) une RuntimeException est levée.

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

Toutes les suggestions?

Était-ce utile?

La solution

Un RuntimeException est une enveloppe pour les exceptions. Essayez d'utiliser le getCause d'imprimer la trace de la pile de l'exception actaul étant levée:

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

Il est également possible ce fichier JPEG est pas pris en charge par la bibliothèque utilisée, comme libjpeg ou quelque chose lié au format JPEG 2000 ou quelque chose hors spécifications.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top