Erreur lors de la sauvegarde d'une image

cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010 - 18 juil. 2009 à 02:03
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010 - 18 juil. 2009 à 23:24
Bonjour,
Je souhaite enregistrer une image (capture) (c'est une BufferedImage) en (captureJpeg) (toujours une BufferedImage) avec la compression Jpeg.
Je suis obligé de passer par des flux mais apparemment il y a complication a writerCapture.setOutput(). Il n'a pas l'air d'accepter mon flux....
Je crois que c'est ca en tout cas ca fait une heure que j'y suis et je suis un peu perdu.

Merci de votre aide..



ImageTypeSpecifier typeS = ImageTypeSpecifier.createFromRenderedImage(capture);
Iterator iterJpeg = ImageIO.getImageWriters(typeS , "jpeg");
ImageWriter writerCapture =  (ImageWriter) iterJpeg.next();

BufferedImage captureJpeg = new BufferedImage(tailleEcran.width, tailleEcran.height, BufferedImage.TYPE_INT_RGB );

ImageOutputStream writeJpeg = ImageIO.createImageOutputStream(captureJpeg);



writerCapture.setOutput( writeJpeg);
ImageWriteParam  jpegParam = writerCapture.getDefaultWriteParam();
jpegParam.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT);
jpegParam.setCompressionQuality(new Float(0.1));
writerCapture.write(null, new IIOImage(capture, null, null), jpegParam );
writerCapture.dispose();





Exception in thread "Thread-4" java.lang.IllegalStateException: Output has not been set!
at com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(Unknown Source)
at packageD.SocketApp$ActionSocket.run(SocketApp.java:115)




Zives

6 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
18 juil. 2009 à 10:39
Salut,

à priori, ton problème se situe là
ImageIO.createImageOutputStream(captureJpeg)


Si tu lis la javadoc tu dois passer un outputstream ou un fichier sinon ça te renvoie null.
Tu passes ensuite null au writerCapture d'où l'exception.
Spécifie un fichier ou un flux de sortie, ça devrait aller mieux
0
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
18 juil. 2009 à 11:30
Salut,
Peux tu m'éclairer?
Comment je crée un flux de sortie pour stocker mon image? Je veux que'elle soit dans un buffer et ne pas creer de fichier.

Merci


Zives
0
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
18 juil. 2009 à 11:41
	ByteArrayOutputStream bufferImg = new ByteArrayOutputStream();

writerCapture.setOutput(bufferImg);


Ne marche pas non plus. Pourtant il sagit d'un OutputStream
Zives
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
18 juil. 2009 à 12:23
c'est à dire "ça ne marche pas" ?
J'ai exécuté ton code avec un ByteArrayOutputStream et j'ai bien un tableau de byte
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
18 juil. 2009 à 20:32
Toujours la même exception de mon premier post..

Je vais désespérer!

Zives
0
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
18 juil. 2009 à 23:24
Exception in thread "Thread-4" java.lang.IllegalArgumentException: Illegal output type!
at javax.imageio.ImageWriter.setOutput(Unknown Source)
at com.sun.imageio.plugins.jpeg.JPEGImageWriter.setOutput(Unknown Source)
at packageD.SocketApp$ActionSocket.run(SocketApp.java:112)




Voila e que j'ai avec un ByteArrayOutputStream
Zives
0
Rejoignez-nous