Bonsoir! Comment faire pour Sauvegarder l'affichage de la console en image ?
(je veux pas faire des Screenshots mais plutôt je voulais que je sauvegarde le résultat de mon programme a partir du programme même)
Version imprimable
Bonsoir! Comment faire pour Sauvegarder l'affichage de la console en image ?
(je veux pas faire des Screenshots mais plutôt je voulais que je sauvegarde le résultat de mon programme a partir du programme même)
Tu souhaites écrire dans un fichier tout ce qui sort dans la console ?
Salut,
Je suis dubitatif sur l'intérêt d'avoir une image qui ne contient que du texte, et surtout le texte d'une console. Enfin, je suppose que le but est de pouvoir lire le texte lorsqu'on regarde l'image.
Tu te rends compte que le texte envoyé vers la console peut avoir une taille conséquente (sauf si c'est un programme du genre qui affiche que "Hello World"), et que faire une image qui contient ce texte peut donc avoir une taille énorme. En plus, une image ayant une taille finie, alors que le texte d'une console ne peut avoir qu'une taille finie qu'à la fin de l'exécution du programme, il faudrait sauvegarder le contenu de la console (output, comme input, éventuellement), pour pouvoir déterminer la taille finie de l'image lorsqu'on a le texte complet de la console, donc, il faut le mémoriser, donc, le plus simple serait de le sauvegarder dans un fichier texte.
Donc ta problématique peut se résumer à
- rediriger la console vers un fichier texte ;
- éventuellement intercepter l'input de la console, pour l'envoyer vers ce fichier texte ;
- convertir un fichier texte en image.
Pour les 2 premiers, il suffit de remplacer le System.out par une instance d'OutputStream adéquate (redirigeant vers un FileOutputStream), et le System.in par une instance d'InputStream, qui redirige également vers même FileOutputStream. Si'l n'y a pas besoin de l'input, une API de logging, comme log4j par exemple, pourrait le faire, également.
Pour convertir un fichier texte en image, il faut d'abord déterminer la police, et son style (taille en particulier), les dimensions de l'image en fonction de la taille de la police et de la largeur qu'on lui impose (80 colonnes de caractères par exemple). Ensuite, tu crées une BufferedImage, et tu écris dedans le texte du fichier, avec la méthode drawString, en suivant l'exemple de la FAQ Comment dessiner et écrire dans une BufferedImage.
Par ailleurs, attention, à la mémoire que pourra occuper ton image en fonction de la taille du texte.
Ou sinon, on prend un screenshot de la console, depuis le programme...
http://docs.oracle.com/javase/6/docs...awt/Robot.html
(oui je sais, t'as dis que tu voulais pas de screenshot, mais je pars du postulat que tu ne voulais pas de screenshots manuels)Code:
1
2 BufferedImage image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())); ImageIO.write(image, "png", new File("/screenshot.png"));
:)