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 :

[debutant]comment travailler une image en donnee matricielle


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Novembre 2004
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 234
    Par défaut [debutant]comment travailler une image en donnee matricielle
    bonjour
    jai un probleme jai une image png et je voulais determienr sa taille largeur longueur en pixel
    car en fait je veux travailler en pixel.
    de plus comment on interprete une couleur car en fait je voudrai encadrer
    les zone blanche dans mon image en gros
    (ouvrir nimporte image de nimporte kel taille)

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    image.getWidth(null) et image.getHeight(null) si objet de type Image, sinon image.getWidth() et image.getHeight() si objet de type BufferedImage. On peux charger une image en mémoire avec ImageIO.

    Si tu veux déterminer les dimensions d'une image sans avoir à la charger en mémoire il te faut regarder plus du côté du descriptif du format de fichier PNG et taper directement dans le fichier brut.

    En général, en Java, on interprete les couleurs comme des entiers 32-bits (8-bits transparence/alpha, 8-bits rouge/red, 8-bits vert/green, 8-bits bleu/blue). Mais il existe d'autre modèle de couleurs. Donc le blanc est FFFFFFFF. tu peux avoir la couleur d'un pixel en faisant getRGB(x, y)

    Je te conseille de lire un didacticiel sur le dessin en Java, puis sur Java2D et enfin eventuellement sur l'API Java Advanced Imaging.
    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 très actif
    Inscrit en
    Novembre 2004
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 234
    Par défaut
    merci mais avrai dire jai pas trop le temps en ce moment je suis bombarder de projet
    dead line dimanche...
    j ai encore une autre question est je pense que cest la derniere
    je voulasi savoir comment ont fait a partir dune image dobtenir sa matrice je pense que c est automatique je pense

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Dans la classe BufferedImage voir la méthode int[] getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int[] pixels = new int[width*height];
    pixels = image.getRGB(0, 0, width, height, pixels, 0, width);
    Comme c'est une copie des valeurs de l'image, il faut utiliser void setRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) pour modifier l'image quand on a changé qq chose dans le tableau.

    Ou alors en manipulant directement le WritableRaster contenu dans la BufferedImage
    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

  5. #5
    Membre très actif
    Inscrit en
    Novembre 2004
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 234
    Par défaut
    merci a tous je vais reflchir dessus si jai le temps mais je pense que je naurais pas le temps du tout

  6. #6
    Membre très actif
    Inscrit en
    Novembre 2004
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 234
    Par défaut
    euh comment je prend limage

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Euh ? Tu peux répeter la question ?

    Si c'est pour ouvrir un fichier sur le disque tu peux utiliser ImageIO.
    Tu peux aussi créer une nouvelle BufferedImage et dessiner dedans tou simplement.
    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

  8. #8
    Membre très actif
    Inscrit en
    Novembre 2004
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 234
    Par défaut ouin
    non en faite je voudrais ouvrir une image puis le bufferiser jai trouver sur develloper.com
    kil fallait utiliser java.awt.tookit puis appliquerune focntion pour passer dune image a une image buferise mais en fant bufferedimage ne supporte pas le png

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur Informatique
    Inscrit en
    Décembre 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur Informatique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 146
    Par défaut
    T'a vu ça ou que le bufferedimage ne gérer pas le png?
    Je fais un editeur de carte 3d isométrique et j'utilise ce format d'image pour la gestion de transparence qu'il a. Et j'utilise également le BufferedImage pour le manipuler dans code...

    Et il y a aucun soucis, je sais pas ou tu as vu ce genre d'info mais faut regarder un peu dans la javadoc c'est l'endroit le plus fiable pour avoir des information sur ce genre de chose!
    Mais j'avoue que je serais curieux de savoir ou tu as vue cette info sur ce site... Car je ne l'ai jamais vu personnellement

  10. #10
    Membre très actif
    Inscrit en
    Novembre 2004
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 234
    Par défaut non me sui tromper cetait pgm
    non je me suis tromper cetait du pgm

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur Informatique
    Inscrit en
    Décembre 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur Informatique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 146
    Par défaut
    vi la effectivement la donne est différente. Je connaissais pas ce format avant que tu ne le dise ^^.

    je sais pas si c'est en rapport avec ce projet ?:
    http://www.enseignement.polytechniqu...PGM/index.html

  12. #12
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Attention Toolkit charge l'image de maniere asynchrone. Elle peut donc ne pas etre chargee entierement en memoire si tu commences a la manipuler tout de suite apres le retour de la methode. Mieux vaut utiliser ImageIO qui charge l'image de maniere synchrone (quand la methode retourne, l'image est completement chargee).

    Les images Java sont independante d'un format quelquonque. Il suffit donc d'avoir les bon filtres d'import/export apres. En regardant la doc tu pourras voir les formats supportes par ImageIO. Si celui que tu veux est absent tu peux egalement recuperer l'extension Java Advanced Imaging (traitements avances sur les images) ou son subset le Java Advanced Imaging Image I/O Tools (qui ne contient que les filtres d'import/export) chez Sun (http://java.sun.com/products/java-media/jai/index.jsp) pour avoir plus de formats. Tu as egalement pas mal de libs externes genre Batik ou VectorGraphics qui supportent tout un tas de format supplementaires.

    Le PGM (portable gray map) est un format d'image assez ancien tres repandu sur UNIX ou tous les pixels sont decrits dans une simple matrice. Pas de compression donc. Le format permet d'ecrire des fichiers ASCII ou binaires.
    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

  13. #13
    Membre confirmé
    Homme Profil pro
    Ingénieur Informatique
    Inscrit en
    Décembre 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur Informatique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 146
    Par défaut
    Ah ok, donc un format assez proche du raw utilise par exemple lors de numérisation ou autre par les fabriquants de matériels touchant aux graphismes si j'ai bien compris.

  14. #14
    Membre très actif
    Inscrit en
    Novembre 2004
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 234
    Par défaut
    estacado non en fait je dois faire un filtre de gabor
    celui ci est deja fait mais il faut que j exploite le resultat maintenant.
    cest a dire faire un seuillage( cest en fait determiner les zones qu eje veux selectionner )
    jai une image en pgm en noir et blanc 8bits par pixel en utilisant imageinfo
    mais en fait je ne sai s pas kel type prendre imageio donnerai pas les info
    deplus je ne sasi pas comment est coder la couleur en pgm.
    ma methode en fait c est encadreer les zones blanche de limage.

    je prends la matrice de limage je calcule ligne par ligne le nombre de pixel
    de meme par colonne
    suivant un seuil je selectionne les lignes et les collone
    ainsi je peux encadrer les zones blanches
    il y a des erreu javoue mais cest un bon algo facile je pnse a coder
    mais je ne sais pas kel couleur ca le noir et le blanc

  15. #15
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Le PBM (Portable Bitmap Map - images monochrome) serait peut-etre mieux pour le stockage alors ; ca fournirai des images moins grosses.
    Sinon en PGM les valeurs sont comprises (dans le fichiers) entre 0 et 255.
    En PBM c'est [0-1].

    Plus d'info sur les 3 formats apparentes PBM, PGM et PPM (description de l'image similaire + stockage en ASCII ou binaire) http://en.wikipedia.org/wiki/Portable_pixmap

    Une fois chargee en image Java et avec des couleurs 32-bits on aura donc Color.BLACK.getRGB() soit FF000000 et Color.WHITE.getRGB() soit FFFFFFFF. Les 255 niveaux de gris sont compris entre ces 2 valeurs avec les 3 champs RGB toujours avec des valeurs identiques et l'alpha toujours a 255 (ex : FF787878).

    Les types a utiliser pour creer des nouvelles BufferedImage sont BufferedImage.TYPE_BYTE_BINARY (monochrome) et BufferedImage.TYPE_BYTE_GRAY (niveaux de gris).
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ Debutant ] Comment afficher une image dans une page JSP ?
    Par Hello_World dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 27/07/2009, 09h13
  2. Debutant,comment afficher une image dans un Jpanel
    Par dilamax_1 dans le forum Graphisme
    Réponses: 1
    Dernier message: 27/04/2008, 16h05
  3. [Crystal Reports 9] comment insérer une image dans Détails
    Par VVE dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2003, 17h06
  4. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 15h54
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 20h06

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