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

2D Java Discussion :

Détourer une image


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut Détourer une image
    Bonjour,

    Existe-t-il quelque chose quelque part qui me permette avec java de détourer une image automatiquement.

    Je rêve...

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    dans l'API de base non bien qu'il soit possible de s'en coder un pas trop difficilement nottament pour la partie recuperation du resultat a la fin.

    En gros : une fois que tu as obenu la forme (Shape, Area) correspondant a ta selection, tu connais les dimensions de l'image destination grace a sa bounding box et ensuite tu peux recuperer les parties de l'image a l'interieur grace a la composite AlphaComposite.SrcIn.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    BufferedImage newImage = new BufferedImage(..., ..., BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = image.createGraphics();
    try {
       // Faire la translation appropriee pour que l'image source et la forme soient bien alignees dans la nouvelle image.
       g2d.setColor(Color.BLACK);
       g2d.fill(shape);
       g2d.setComposite(AlphaComposite.SrcIn);
       g2d.drawImage(oldImage, ..., ..., null);
    }
    finally {
      gd2.dispose();
    }
    On cree une image completement transparente.
    Puis, on dessine la forme en noir, puis on met la bonne composite et on finit par dessiner l'image par dessus.
    L'image source remplira alors toutes les parties noires de la forme et le reste sera transparent.

    Cette methode est a preferrer par rapport a l'usage de setClip() sur le Graphics car ici on peut conserver l'antialiasing (penser a faire jouer les RenderingHints du Graphics si on en veut pas au contraire).
    Sinon setClip() marche aussi mais bon voila pas d'antialias.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    BufferedImage newImage = new BufferedImage(..., ..., BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = image.createGraphics();
    try {
       // Faire la translation appropriee pour que l'image source et la forme soient bien alignees dans la nouvelle image.
       g2d.setClip(shape);
       g2d.drawImage(oldImage, ..., ..., null);
    }
    finally {
      gd2.dispose();
    }
    En fait le plus dur va etre d'editer la forme via un outil de type pipette (algorithme de flood), de dessin de forme predefinies (Shape, Rectangle2D, Ellipse2D, etc.), de detourage manuel (Path, Path2D, GeneralPath) et de concatenation des differents modes (Area). Bref c'est faire cet editeur avec ses differents modes et sa manipulation de formes vectorielles qui sera le plus long a coder.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Oui, super grand merci, mais en fait je me suis un peu trompé dans ma question... je voudrais non seulement détourer, mais de plus découvrir automatiquement la forme que contient une image... si elle contient une forme.

    hum

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut


    Hum alors la bien sur definitivement non dans l'API de base. Aucune idee si le JAI permet de faire ce genre de choses. Peut-etre dans ImageJ ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Détourer une image
    Par Devilju69 dans le forum Flash
    Réponses: 3
    Dernier message: 13/11/2008, 16h09
  2. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  3. Réponses: 3
    Dernier message: 12/06/2002, 19h03
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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