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 successives


Sujet :

AWT/Swing Java

  1. #1
    Invité
    Invité(e)
    Par défaut capture d'écran successives
    bonjour,
    je cherche une solution pour faire des captures d'écran successives en java 20 images au moins par seconde.
    peut on réaliser ça avec java?
    j'ai testé le java.awt.Robot avec une boucle ça m'as généré l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "Thread-22" java.lang.OutOfMemoryError: Java heap space

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, 20 images par secondes? C'est pour faire une vidéo? une démonstration d'un logiciel?

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    20 images/s, il va falloir une bonne machine pour gérer le flux d'infos, et les sauvegarder !
    Pour un écran 1024*768, sans compression, ça génère du 15 Mo/s environ !
    Je serais curieux de savoir ce que tu cherches à faire exactement
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Invité
    Invité(e)
    Par défaut
    en fait,
    je veux détecter les objets qui ont changés dans l'écran.
    un genre de suivi de mouvements par exemple.
    peut on faire la redirection des captures d'image vers un fichier?

  5. #5
    Membre Expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Par défaut
    ceci devrait t'aider ... bon apres faut automatiser la chose !

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public class ScreenShotFactory {
        public final static String IMAGE_TYPE_JPEG = "jpeg";
        public final static String IMAGE_TYPE_GIF = "gif";
        public final static String IMAGE_TYPE_PNG = "png";
        public static void screenShot(Rectangle screenArea,
                Dimension screenshotFinalDimension, String pictureName,
                String compressionType) {
            BufferedImage buf = null; // Notre capture d'écran originale
            BufferedImage bufFinal = null; // Notre capture d'écran redimensionnée
            try {
                // Création de notre capture d'écran
                buf = new Robot().createScreenCapture(screenArea);
            } catch (AWTException e) {
                e.printStackTrace();
            }
            // Création de la capture finale
            bufFinal = new BufferedImage(screenshotFinalDimension.width,
                    screenshotFinalDimension.height, BufferedImage.TYPE_INT_RGB);
            // Redimensionnement de la capture originale
            Graphics2D g = (Graphics2D) bufFinal.getGraphics();
            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                    RenderingHints.VALUE_INTERPOLATION_BILINEAR);
            g.drawImage(buf, 0, 0, screenshotFinalDimension.width,
                    screenshotFinalDimension.height, null);
            g.dispose();
            // Ecriture de notre capture d'écran redimensionnée
            try {
                ImageIO.write(bufFinal, compressionType, new File(pictureName));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public static void main(String[] args) {
            ScreenShotFactory.screenShot(new Rectangle(0, 0, 100, 100),
                    new Dimension(50, 50), "test.png",
                    ScreenShotFactory.IMAGE_TYPE_PNG);
        }
    }

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par mehdiing Voir le message
    en fait,
    je veux détecter les objets qui ont changés dans l'écran.
    un genre de suivi de mouvements par exemple.
    Et.... tu as un algo, ou déjà une méthode pour analyser les modifications entre deux images successives ?

    peut on faire la redirection des captures d'image vers un fichier?
    Oui, mais dans ton cas, est-ce vraiment nécessaire ? Tu fais de l'analyse temps réel ou à postériori ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Invité
    Invité(e)
    Par défaut
    pour l'algorithme ce n'est pas le plus important maintenant. les algorithmes de détection de mouvement (block matching) sont très nombreux le plus facile (la recherche exaustive) consiste à soustraire la deuxième image de la première. en fait la détection de changement n'est pas en temps réel c'est pour cela que je pense que la redirection vers un fichier facilitera les choses.

  8. #8
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 38
    Par défaut
    tu comptes sauvegarder toutes les images dans des fichiers différents alors ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    tu comptes sauvegarder toutes les images dans des fichiers différents alors ?
    oui

  10. #10
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Citation Envoyé par mehdiing Voir le message
    bonjour,
    je cherche une solution pour faire des captures d'écran successives en java 20 images au moins par seconde.
    peut on réaliser ça avec java?
    j'ai testé le java.awt.Robot avec une boucle ça m'as généré l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "Thread-22" java.lang.OutOfMemoryError: Java heap space
    Cela dit sans parler des grosses ressources nécessaires, tu peux modifier la valeur du heap space en passant des paramètre au lancement de l'appli:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Xms64m -Xmx256m appli
    Pour 64Mo à l'initialisation, extensible à 256...

    Mais bon si tu n'a pas une grosse config tu va devoir espacer les screenshots et bien gérer la mémoire.

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