IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Capture d'écran


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut Capture d'écran
    Bonjour,

    Je souhaiterais faire une capture d'écran automatique lors de l'ouverture d'une page.

    Je suis parvenu à faire la capture mais le problème est que cela affiche la page courante mais non pas la page voulue.

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Robot robot = new Robot();
        String format = "jpg";
        String filename = "D:\\Dossiercapture\\capturegraphereport\\Screenshot."+format;
        Toolkit tlkit = Toolkit.getDefaultToolkit();
        //dimension ecran capture
        Dimension dim = tlkit.getScreenSize();
        Rectangle screenRec = new Rectangle(dim);
        BufferedImage screenfullim = robot.createScreenCapture(screenRec);
        ImageIO.write(screenfullim, format, new File(filename));
    Quelqu'un saurait-il m'indiquer comment procéder pour que ma fonction testscreen() retourne l'image.jpg de la page voulue ?
    J'aimerais également savoir s'il est possible de donner le nom de l'image dynamiquement ?

    [EDIT]
    En fait, j'ai déjà trouvé le problème, j'ai juste créé un lien href pour capturer l'écran. Cependant, il me reste à savoir comment dynamiser le nom de la capture ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String filename = "D:\\Dossiercapture\\capturegraphereport\\Screenshot."+format;
    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Si on reprend ton exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String filename = "D:\\Dossiercapture\\capturegraphereport\\Screenshot."+format;
    On constate que le format est déjà dynamique.
    Il t'est donc possible d'utiliser la même logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String SEPARATOR = "_";
    String number = "001";
    String screenName = "MainPage";
    String filename = "D:\\Dossiercapture\\capturegraphereport\\Screenshot"+SEPARATOR+screenName +SEPARATOR+number"."+format;
    Après il faut que la fonction ai un ou plusieurs paramètres pour compléter le nom.

    Sachant que ce n'est pas un "href", mais un pathfile. Sachant que href n'est que l'attribut de la balise <a> qui contient une URL qui est une sous catégorie URI.

    Source :
    http://en.wikipedia.org/wiki/Hyperlink
    http://en.wikipedia.org/wiki/Uniform_resource_locator
    http://en.wikipedia.org/wiki/Uniform...rce_identifier
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut Capture d'écran JAVA(2)
    Resalut,

    Merci bcp, je vais essayer. En faite c'est le nom du fichier que j'aimerais dynamiser, merci j'ai compris la réponse que vous m'aviez proposée.
    Concernant le href, c'était juste pour rediriger vers "Screenshot.jsp", parce que sinon, quand je lance "index.jsp", la capture fait déja son travail, donc j'ai mis le href dans la même page jsp que contient le code de création d'une graphe(que je voudrais capturer). Comme ça quand je fais un clic sur Capture ecran, il y a "capture de la graphe".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li><a href="Screenshotgraphe.jsp">Capture ecran</a></li>
    J'espère que vous compreniez mon souci.
    Et dans Screenshotgraphe.jsp, il n'y a que l'appel de la fonction "screenshot";

    Je vais tout d'abord essayer avec l'aide que vous m'avez envoyer.

    Cordialement,

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Attends, tout doucement là, sur le coup, il y a un truc qui me chiffonne très fortement.


    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Robot robot = new Robot();
        String format = "jpg";
        String filename = "D:\\Dossiercapture\\capturegraphereport\\Screenshot."+format;
        Toolkit tlkit = Toolkit.getDefaultToolkit();
        //dimension ecran capture
        Dimension dim = tlkit.getScreenSize();
        Rectangle screenRec = new Rectangle(dim);
        BufferedImage screenfullim = robot.createScreenCapture(screenRec);
        ImageIO.write(screenfullim, format, new File(filename));
    Il est bien dans une applet que tu lance chez le client hein? Pas dans le serveur? Parce que sinon t'es occupé de capturer l'écran du serveur, pas du client

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut Capture d'écran JAVA
    Bonjour à tous,

    Je ne comprend pas, euh là quand je fais un clic sur le lien "href" cela affiche la graphe. Mon but c'est d'avoir une capture de la graphe donc j'ai mis directement dans le "Graphe.jsp" le lien qui va appeler directement la fonction qui fait la capture. Est ce que vous me compreniez là?

    Cordialement,

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    La page web qui affiche le graphe s'exécute dans le navigateur, coté client. La JSP, qui génère la page web, s'exécute dans le serveur. Si tu mets un code Java dans la JSP qui fait une copie d'écran, il s'exécute dans le serveur, et, donc fait une copie d'écran du serveur (si tant est qu'il y a un écran dont faire la copie). Pour faire une copie d'écran de la page web, il faut le faire dans le client : pour exécuter du Java, à partir de la page web, dans le navigateur, il faut un Applet.

    Pour résoudre ton problème, qui est d'obtenir au mieux une image qui représente le graphe affiché, au pire une copie d'écran du client, il faut déjà commencer à regarder comment est généré le graphe. S'il s'agit d'une image générée par une API exécutée dans le serveur, autant utiliser directement cette image (éventuellement l'intégrer dans une autre image en ajoutant du texte autour, ou autre, si le but est de ressembler à la page web finalement affichée). Si le graphe est produit directement par la page web, en JavaScript et html5 par exemple, tu peux faire une copie d'écran directement dans la page web, en JavaScript et html5 (voir ce blog). Le code dans la JSP ne fera qu'ajouter ce script à la page html générée par la JSP (et l'appeler par clic sur lien, ou comme tu veux). Pour sauvegarder le blob dans un fichier, voir ce blog.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    en JavaScript et html5 par exemple, tu peux faire une copie d'écran directement dans la page web, en JavaScript et html5 (voir ce blog).
    Le code mentionné là ne fait pas vraiment de screenshot, juste une copie de l'arbre DOM qu'il transfère dans une nouvelle page. La preuve, si je redimensionne le "screenshot", le texte se réarrange


    Pour le reste, si tu a besoin de générer un screenshot de l'interface de ton utilisateur, c'est un très très gros signe que tu as un soucis dans ton design. Quand je vais sur un page web, ça la regarde pas ce qu'il y a sur mon écran . Au delà des problèmes techniques que cela pose, il y a toute la problématique de la légalité de la chose. Cet écran peut très bien contenir des informations confidentielles, privée, ...

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Le code mentionné là ne fait pas vraiment de screenshot, juste une copie de l'arbre DOM qu'il transfère dans une nouvelle page. La preuve, si je redimensionne le "screenshot", le texte se réarrange
    Mince, pour tester la démo, je n'ai tenté que la sélection . La sauvegarde du blob dans un fichier ne permet-elle pas au final d'avoir vraiment un fichier image ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    t'aura un blob contenant un DOM.

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    Bonjour les amis,

    Merci beaucoup de m'avoir aidé. j'ai un peu modifié mon code. j'aimerais que le nom soit dynamique, c à d à chaque printscreen, il y a nouvelle capture mais non pas update de l'image déjà existante. Je voudrai donc incrémenter la variable number, mais je n'ai aucune idée comment le faire. ci joint mon bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String separateur = "_";
    	String format = "jpg";
    	int number = 1;
    ...
    String filename = "D:\\Folder\\capturegraphereport\\Screenshot."+separateur+number+"."+format;
    j'aimerais que à chaque fois qu'on fait un clic sur un bouton, la capture d'écran obtenue se nomme Screenshot_1,
    deuxième clic sur un bouton, la capture d'écran obtenue se nomme Screenshot_2,
    ainsi de suite,
    actuellement, la nouvelle capture écrase l'image Screenshot_1;
    Pourriez vous m'aider svp
    Merci

  11. #11
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Il faut que ton int number = 1; soit définit à l'extérieur de ta méthode en attribut d'objet ou de classe par exemple.

    L'une des solutions possible serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class MaClasseQuiFaitLesScreenShot {
        private static int number = 0;
        // ou variante
        // privat int number = 0;
     
        public void maMéthodeQuiEnregistreUnScreenShot() {
            String separateur = "_";
    	String format = "jpg";
    	MaClasseQuiFaitLesScreenShot.number++;
            // ou variante
            //this.number++;
            //...
            String filename = "D:\\Folder\\capturegraphereport\\Screenshot."+separateur+number+"."+format;
        }
    }
    Si tu es étudiant en informatique, je te conseil de revoir le concept objet et ses applications.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    Merci Patrick,
    ça marche mais le hic c'est que ça saute, 1 puis 3 puis 5 puis 7 ... Je ne comprend pas pourquoi.

    Pourrais tu me l'expliquer stp?
    merci en avance,
    aplus

  13. #13
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Soit tu appel ta fonction plusieurs fois lors d'un clique. Tu déclenche l'événement sur le Press et le Realease ??
    Soit tu as mis l'incrémentation non commenté plusieurs fois !

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. Empécher les captures d'écran
    Par alix the webmasta dans le forum Autres langages pour le Web
    Réponses: 10
    Dernier message: 17/02/2006, 00h24
  2. [VB.NET] Capture d'écran
    Par tiboooo dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/01/2006, 18h23
  3. Pb capture d'écran et msgbox
    Par PRACH dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 03/01/2006, 09h38
  4. Capture d'écran
    Par lildan dans le forum MFC
    Réponses: 1
    Dernier message: 14/11/2005, 14h26
  5. Réponses: 10
    Dernier message: 10/10/2003, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo