Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LOUPE EN JAVA


Information sur la source

Catégorie :Application Classé sous : loupe, robot, bufferedimage, mouseinfo Niveau : Débutant Date de création : 14/08/2006 Date de mise à jour : 26/08/2006 22:35:29 Vu / téléchargé: 4 607 / 596

Note :
8,67 / 10 - par 3 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

Description

Utilitaire Loupe.
 

Source

  • /*
  • * Loupe.java
  • *
  • * Créé le 14-08-2006, 12:14
  • *
  • */
  • import javax.swing.* ;
  • import java.awt.* ;
  • import java.awt.image.* ;
  • /**
  • * Auteur : A.B.
  • */
  • public class Loupe extends JFrame implements Runnable {
  • /**
  • * Données membres
  • */
  • private BufferedImage image = null;
  • /** constructeur de la classe Loupe */
  • public Loupe() {
  • super ("Loupe");
  • setDefaultCloseOperation (EXIT_ON_CLOSE);
  • setResizable (false);
  • setBounds (50, 50, 250, 250);
  • setVisible (true);
  • }
  • /**
  • * faire un imprime écran une zone rectangulaire de centre la pointe du
  • * curseur
  • */
  • public void getScreenShot (Point point) throws AWTException {
  • getScreenShot (point.x, point.y);
  • return;
  • }
  • /**
  • * faire un imprime écran d'une zone rectangulaire de centre la pointe du
  • * curseur avec un facteur d'aggrandissment x2
  • */
  • public void getScreenShot (int x, int y) throws AWTException {
  • int sourceWidth = getWidth () / 2;
  • int sourceHeight = getHeight () / 2;
  • Robot robot;
  • robot = new Robot ();
  • Rectangle rectangle;
  • rectangle = new Rectangle (x - (sourceWidth >> 1),
  • y - (sourceHeight >> 1),
  • sourceWidth,
  • sourceHeight);
  • image = robot.createScreenCapture (rectangle);
  • return;
  • }
  • /**
  • * @param point : (x, y)
  • * renvoie : true si ce point est à l'intérieur de la fenêtre
  • * false sinon
  • */
  • boolean isPointInRect (Point point) {
  • int frameX = getX ();
  • int frameY = getY ();
  • int frameWidth = getWidth ();
  • int frameHeight = getHeight ();
  • return ((point.x >= frameX) & (point.x <= frameX + frameWidth)) &
  • (point.y >= frameY) & (point.y <= frameY + frameHeight);
  • }
  • /**
  • *
  • */
  • public void run () {
  • while (true) {
  • try {
  • // récupérer les coordonnées de la pointe de la souris
  • Point point;
  • point = MouseInfo.getPointerInfo ().getLocation ();
  • if (isPointInRect (point))
  • continue;
  • Graphics g;
  • g = getGraphics ();
  • // faire un imprime écran
  • try {
  • getScreenShot (point);
  • }
  • catch (AWTException exception) {
  • }
  • // afficher l'imprime écran sur le fenêtre
  • if (image != null)
  • g.drawImage (image, 0, 0, getWidth (), getHeight (), this);
  • // libérer le contexte d'affichage
  • g.dispose ();
  • // faire un rafraîchissement tout les 50 millisecondes
  • Thread.sleep (50);
  • }
  • catch (InterruptedException exception) {
  • }
  • }
  • }
  • /**
  • * @param args : ligne de commande
  • */
  • public static void main(String[] args) {
  • // code de l'application
  • Thread Application = new Thread ( new Loupe ());
  • Application.start ();
  • }
  • }
/*
 * Loupe.java
 *
 * Créé le 14-08-2006, 12:14
 *
 */


import javax.swing.*    ;
import java.awt.*       ;
import java.awt.image.* ;

/**
 * Auteur : A.B.
 */

public class Loupe extends JFrame implements Runnable {
    
    /**
     * Données membres
     */
    private BufferedImage image = null;
    
    /** constructeur de la classe Loupe */
    public Loupe() {
        super ("Loupe");
        setDefaultCloseOperation (EXIT_ON_CLOSE);
        setResizable (false);
        setBounds (50, 50, 250, 250);
        
        setVisible (true);
    }
    
    /**
     * faire un imprime écran une zone rectangulaire de centre la pointe du 
     * curseur
     */
    public void getScreenShot (Point point) throws AWTException {
        getScreenShot (point.x, point.y);
        return;
    }
    
    /**
     * faire un imprime écran d'une zone rectangulaire de centre la pointe du 
     * curseur avec un facteur d'aggrandissment  x2
     */
    public void getScreenShot (int x, int y) throws AWTException {
        int sourceWidth  = getWidth ()  / 2;
        int sourceHeight = getHeight () / 2;
        
        Robot robot;
        robot = new Robot ();
        
        Rectangle rectangle;
        rectangle = new Rectangle (x - (sourceWidth >> 1),
                                   y - (sourceHeight >> 1), 
                                   sourceWidth, 
                                   sourceHeight);
        
        image = robot.createScreenCapture (rectangle);
     
        return;
    }

    /**
     * @param point : (x, y)
     * renvoie : true  si ce point est à l'intérieur de la fenêtre
     *           false sinon
     */
    boolean isPointInRect (Point point) {
        int frameX      = getX ();
        int frameY      = getY ();
        int frameWidth  = getWidth ();
        int frameHeight = getHeight ();
        
        return ((point.x >= frameX) & (point.x <= frameX + frameWidth)) &
                (point.y >= frameY) & (point.y <= frameY + frameHeight);
    }

    /**
     * 
     */ 
    public void run () {
        while (true) {
            try {
                // récupérer les coordonnées de la pointe de la souris
                Point point;
                point = MouseInfo.getPointerInfo ().getLocation ();
                
                if (isPointInRect (point)) 
                    continue;
                
                Graphics g; 
                g = getGraphics ();
                
                // faire un imprime écran
                try {
                    getScreenShot (point);
                }
                catch (AWTException exception) {
                }
                // afficher l'imprime écran sur le fenêtre
                if (image != null)
                    g.drawImage (image, 0, 0, getWidth (), getHeight (), this);
                // libérer le contexte d'affichage
                g.dispose ();
                // faire un rafraîchissement tout les 50 millisecondes
                Thread.sleep (50);
            }
            catch (InterruptedException exception) {
            }
        }
    }

    /**
     * @param args : ligne de commande
     */
    public static void main(String[] args) {
        // code de l'application
        Thread Application = new Thread ( new Loupe ());
        Application.start ();
    }
}

Conclusion

Merci à ceux qui m'ont aidé à réaliser ce petit programme.
Remarques, Critiques, Remerciement sont les bienvenues.

Et Merci ...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

26 août 2006 22:35:29 :
Ajout d'un Zip

Commentaires et avis

signaler à un administrateur
Commentaire de Twinuts le 14/08/2006 13:43:50 administrateur CS

Salut,

code très interessant, bien vommenté et d'une utilisation fluide simpas.

petites remarques :
- petit bug d'affichage si la souris se trouve sur un des coins de l'ecran.
- c'est juste une idée mais tu pourrais re travailler le rendu de l'image avant de la dessinner exemple (ligne 103):
if (image != null){
  Graphics2D g2 = image.createGraphics();
  g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
  g2.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,
RenderingHints.VALUE_COLOR_RENDER_QUALITY);
  g2.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
  g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
  g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);

  g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
  g2.dispose();
  g2 = null;
}

signaler à un administrateur
Commentaire de Ombitious_Developper le 14/08/2006 13:46:29

Merci pour votre remarque : je vais la prendre en considération.

signaler à un administrateur
Commentaire de tucobouch le 15/08/2006 15:56:54

Bonjour,
juste une petite remarque : tu pourrai poster la source aussi avec, ça éviterai de faire un copier/coller .... c'est qu'on est feignasse ;)

signaler à un administrateur
Commentaire de jmecodol le 26/08/2006 16:11:11

très bonne remarque,
quand je copie-colle,
j'ai le numéro des lignes au début de chaque ligne,

donc une autre raison pour publier la source ..

je dis ca mais c'est que j'imagine le nombre de
personne qui font comme je fais souvent :
- le jour ou j'en aurai besoin vraiment,
ce jour la je testerai,
mais la j'ai pas le temp de faire un script qui
retire les numéro,
ni de taper 123 fois 'suppr' 'suppr' 'suppr' 'suppr' 'fleche-bas' .

merci pour m'avoir montré que
c'était simple de faire une loupe .

signaler à un administrateur
Commentaire de Ombitious_Developper le 26/08/2006 22:58:18

Salut :

Voilà la source est maintenant en zip.

signaler à un administrateur
Commentaire de paradoxxl le 03/09/2006 16:58:09

Bonjour
joli petit programme, mais je trouve qu'au contraire, cela manque  beaucoup de commentaire, meme si cela n'est difficile de comprendre, c'est toujours plus agreable..

Merci ^^

signaler à un administrateur
Commentaire de paradoxxl le 03/09/2006 17:01:25

Je retire ce que j'ai dit , je n'avais regardé que le code dans le code, pas celui de page web (pourquoi avoir enlevé le commentaire dans le zip ?)

signaler à un administrateur
Commentaire de paradoxxl le 03/09/2006 17:10:04

Pour tucobouch, pour eviter de copier les numero , il s'agit d'utiliser IE pour copier/coller, meme si ce n'est pas l'ideal..

signaler à un administrateur
Commentaire de tucobouch le 03/09/2006 22:38:17

Bonjour,

heu... c'est pas moi qui avait des problemes avec le copier coller  (avec les numeros) lol. c'est JMECODOL lol mais c'est du detail ;)

signaler à un administrateur
Commentaire de jmecodol le 04/09/2006 00:58:00

J'était en train de faire la marmotte,

mais c'est raté pour cette fois-ci je crois .

>^.^<

signaler à un administrateur
Commentaire de imadtahi le 28/11/2006 23:34:18

Bravo, je vous félicite ;) trés bon programme.
Merci

signaler à un administrateur
Commentaire de opla13 le 04/02/2007 21:35:45

salut ,
on m'a demandé un mini projet mais j'ai pas trouvée je compte sur vous de m'aider voila je suis un etudiant en 2éme année informatique
quelque soit  le sujet php,cpp,java,javascript ,reseau ...
svp aider moi
opla13@yahoo.fr

signaler à un administrateur
Commentaire de Twinuts le 04/02/2007 21:52:17 administrateur CS

Salut,

il y a un forum pour ça.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

BuferedImage et images [ par AlphaSurfeur ] Bonjour à tous,Voila, je voudrais deposer une image dans une BufferedImage de façon à pouvoir la modifier pixel par pixel. Le probleme c'est que je n' Robot dynamique en JAVA [ par SuperSteph ] Je suis en 2éme année d'ecole d'info, en projet en train de faire en java un simulateur de robots points et robots omnidirectionnels. J'ai un probléme Rafraichissement graphique d'un robot en simulation [ par SuperSteph ] On est en train de faire un projet qui simule un robot dynamiquement.On a reussi à faire evoluer le robot par contre on a une "trainéé". On aimerait v URGENT (BMP et BufferedImage) [ par Geomaster ] Bonjour,J'ai réalisé un petit prog qui prend n'importe quelle image GIF ou JPEG et cree un fichier texte contenant les valeurs R, V et B de chaque pix Pb de chargement de jpg sur une BufferedImage [ par shivan ] Alors je vous explique vite fait, j'ai une classe devant gérer des images en leur rajoutant du texte et des fichiers jpg a volonté. le constructeur ch pb graphique... [ par alexbristol ] bonjour,je veux créer une grille dans laquelle il y aura un point de départ et un point d'arrivée. Ensuite un petit robot va parcourir la grille pour BufferedImage.. toujours elles [ par warpis ] hum, en gros, j'ai tappé un truc (ci dessous). j'ai une classe marsouin contenant une image.. j'attends bien que l'image se charge avec un média track Image en GIF sans enregistrer [ par balbinus ] Je voudrais faire un serveur qui génère une image aléatoire... J'ai donc, pour l'instant, une BufferedImage. Comment je peux faire pour l'envoyer sous applet pour recuperer le contenu du presse papier et enregistrer en jpg [ par fmazoue ] bonjour a tous voilà mon pb :je voudrais créer un applet permettant de récupérer le contenu du presse papier puis d'enregistrer ce contenu dans un jpe coment faire pour redimentionner une BufferedImage [ par harryharry ] lscorpiocoment faire pour redimentionner une BufferedImage?


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,67 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.