comment enregistrer GLcanvas en Jpeg?? [Java] - Java - Programmation
Marsh Posté le 15-03-2006 à 16:18:22
Hola 2 seconde, c'est pas trivial ton truc.
Alors je me suis penché sur le problème et apparement il n'y a pas de méthode super simple pour faire ça.
Mais voici un bout de code qui peut te servir de point de départ
Code :
|
Voici les liens dont je me suis servi pour comprendre comment ça marche
http://schmidt.devlib.org/java/ima [...] files.html
http://java.sun.com/docs/books/tut [...] index.html
http://java.sun.com/products/java- [...] GFlip.java
Marsh Posté le 15-03-2006 à 16:46:54
ouahou...
ben alors si je m'atendait a ca...Merci bcp bidem, t'as du y passer un bon bout de temps quand meme...
seulement, ca m'enregistre un fond tout noir.
PS : je l'ai pas dit mais c'est de la modélisation en 3D.....c'est grave docteur??
en tout cas encore merci, j'ai une piste maintenent
Marsh Posté le 15-03-2006 à 17:23:27
Aussi etrange que cela puisse etre, j'y comprend rien:
il m'enregistre des images bizarre, genre des bout de mon bureau, des fenetre affichée, mon fond d'ecran, alors que dans les 3/4 des cas, ce sont des fenetre/icone/fond d'ecran qu'on ne voit pas pdt le test....
Voila le code modifier, j'ai essayer différents truc:
GraphicsConfiguration gc = myCanvas.getGraphicsConfiguration();
BufferedImage bimg = gc.createCompatibleImage(myCanvas.getWidth(), myCanvas.getHeight());
Graphics2D graph = bimg.createGraphics();
myCanvas.paint(graph);
File file = new File("test.jpg" );
FileOutputStream out;
try{ImageIO.write(bimg, "jpg", new File("sdfgs" ));}
catch(Exception e) { e.getStackTrace(); }
try
{ out = new FileOutputStream(file);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimg);
param.setQuality(1.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(bimg);
}
catch(Exception e) { e.getStackTrace(); }
Marsh Posté le 15-03-2006 à 17:57:14
Je serais tenté de dire que c'est la façon dont tu récupères la BufferedImage à partir d'un GraphicsConfiguration.
Es-tu sur que myCanvas a une GraphicsConfiguration juste pour lui ou est-ce qu'il récupère la config de son parent.
Pour savoir ça il faut faire des affichages (gc.getDevice(). ... getBounds())
Marsh Posté le 15-03-2006 à 22:08:17
euh...
J'ai essayer avec ta facon, ca me donne des images toutes noires....et en me balladant, j'ai trouver ces GraphicsConfiguration, je ne sais pas du tout ce que c'est, j'ai laisser le projet au boulot, donc je pourrait tester que demain....
Que doit me donner gc.getDevice()?
Marsh Posté le 16-03-2006 à 09:13:26
Je sais que je fait du jogl, parceque j'ai mis une heure a faire tourner le pgrm sous linux, a cause de ca, mais apres openGL, j'en sais rien....
Je suis juste stagiaire, c'est pas moi qui ait coder les 20Mo de pure ligne, lol..
Ce projet permet de voir en 3D la déformation objets (tracés avec des points et des traits) lorsque les muscles qui y sont attachés se contractent avec un niveau choisit en temps réel.
Mon but était de créer les outils permettant de mesurer avec précision ces amplitudes( génération de graphes + génération de fichier matlab), ce que j'ai fait avec grand succès.
Maintenant on me demande de faire de sorte que l'on puisse créer un vidéo....
Donc je commence d'abord par apprendre a faire des jpeg, car il exsiste apres des outils de creation de video avec ces dernier.
Sinon pour revenir au debut, openGL ou pas, j'en sais rien:
- Le seul endroit ou j'ai ca d'ecrit dans le projet c'est dans une seuledes dizaine de classe:
/**
* Set texture mode. Mode is one of these values:
* PolygonalMesh.GL_DECAL, PolygonalMesh.GL_REPLACE,
* PolygonalMesh.GL_MODULATE, PolygonalMesh.GL_BLEND See openGL docs
* for the meaning.
*
* @param textureMode texture mode
* @see #getTextureMode
*/
Celle ci comme vous puvez vous en douter permet de tracer les différents traits entre les points....je crois
Marsh Posté le 16-03-2006 à 09:15:19
Voila ce que me retourne System.out.println(gc.getDevice());
"X11GraphicsDevice[screen=0]"
Marsh Posté le 16-03-2006 à 09:15:38
Tu pourrais me dire comment tu arrives à faire marcher des textures avec JOGL ? car là sur notre projet on galère depuis plusieurs semaines sans succès ....
Marsh Posté le 16-03-2006 à 09:17:28
Bidem a écrit : Je serais tenté de dire que c'est la façon dont tu récupères la BufferedImage à partir d'un GraphicsConfiguration. |
Toi qui à l'air de bien gérer Jogl ... tu pourrais m'aider pour le soucis de textures évoqué ?
Marsh Posté le 16-03-2006 à 09:25:44
Voila, le gc.getBounds() me retourne les dimension de l'ecran je croit:
java.awt.Rectangle[x=0,y=0,width=1152,height=864]
Au lien de 500/473 pour mon canvas
Marsh Posté le 16-03-2006 à 10:41:05
Kyle_Katarn a écrit : Toi qui à l'air de bien gérer Jogl ... tu pourrais m'aider pour le soucis de textures évoqué ? |
J'y connais rien en Jogl
ici le problème ce n'est pas jogl mais purement awt.
Citation : Voila, le gc.getBounds() me retourne les dimension de l'ecran je croit: |
Là je sèche.
Il va falloir que tu comprennes comment interagissent le GraphicsConfiguration, la BufferedImage et la méthode paint du Canvas.
Et là, pas de miracle, il faut lire et comprendre la javadoc et/ou trouver plus d'info sur le net.
Marsh Posté le 16-03-2006 à 10:49:17
okay ca roule, en tout cas, je remercie beaucoup...
A bientot
Marsh Posté le 16-03-2006 à 12:21:46
ouais ben la je galere comme un port, j'essaye un peut tout, et ca me donne rien
Marsh Posté le 17-03-2006 à 09:52:48
Pas possible. Ton contexte OGL n'est pas gere par Java.
Ca sera possible dans le futur 1.6 (je crois d'ailleurs que c'est deja code a partir de la b57, a verifier)
Marsh Posté le 17-03-2006 à 10:04:36
ah ouais, tu a l'air de bien connaitre le theme eh...
Donc bon, ben je vais passer par aurte chose....
Merci de l'infos, je vais le dire a mon tuteur que je vois tout a l'heure, qu'il s'arache pas els cheveux pendant des heures...
A +
Marsh Posté le 20-03-2006 à 09:08:56
resalut, dsl de pas avoir rep avant.
J'ai testé java 1.6, et toujours le même probleme, tant pis, ce sera pour plus tard...
Marsh Posté le 15-03-2006 à 14:16:42
Salut a tous, voila je suis en stage, et je travail sur unprojet qui modelise les mouvement des objet sous l'application des muscles...
Il faudrait que l'on puisse créer des films, donc a moi d'enregistrer des images à partir d'un GLcanvas...
J'ai tout fouiller et je voit vraiment pas...une idée?
Merci