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 :

Créer une image depuis rien.


Sujet :

2D Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut Créer une image depuis rien.
    Bonjour

    Je pense que ma question sera triviale pour quiconque connait bien java.
    Je n'arrive pas à comprendre quel est l'équivalent en java de la clase pimage de processing.
    J'aimerai simplement avoir un rectangle dont je puisse déterminer les dimensions en pixel, et dont je puisse déterminer la couleur pixel par pixel.
    L'idée générale étant que je possède un fichier texte avec des nombres, et que je choisirai les couleurs en fonction de ce nombre.
    Cette image sera la base de ce que je ferais, j'aimerai donc éviter avoir à le recalculer chaque fois que mon applet appellera paint.

    Or, dans tous les tutoriels que je vois, l'image qu'on créé vient par exemple d'une image qu'on importe.

    Respectueusement
    Arthur RAINBOW

    PS: pour une raison que j'ignore quand je tente de charger les pages tels que http://java.developpez.com/faq/gui/?...general_images firefox me dit qu'elles mettent trop de temps à répondre.
    J'ignore si c'est parce que je suis depuis le Québec, ou quoi que ce soit. Mais a qui devrai-je le signaler, où est-ce un problème connu?

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    J'ignore ce qu'est pimage ou processing mais en java la classe representant des images est la classe Image qui date des premieres versions de Java. Cependant on a plus souvent tendance a manipuler l'une de ses classes filles : la classe BufferedImage.

    Construire une BufferedImage est assez simple, il suffit d'utiliser son constructeur qui prend en paramettre sa largueur, sa hauteur et son type. Les types les plus courrament utilises sont :

    • BufferedImage.TYPE_INT_ARGB : image avec des couleur 32-bits ARGB (a = alpha = transparence). Ces couleurs peuvent donc avoir de la transparence et elles sont opaques quand alpha vaut 255.
    • BufferedImage.TYPE_INT_RGB : image avec des couleur 32~24-bits RGB. Ici a = 255 tout le temps ; ces couleurs sont donc opaques.
    • BufferedImage.TYPE_BYTE_INDEXED : image avec des une palette 8-bits indexee.
    • BufferedImage.TYPE_BYTE_GRAY : image en niveaux de gris 8-bits.
    • TYPE_BYTE_BINARY : images en couleurs sur 1, 2 ou 4 bits. Peut servir pour les images en 2 couleurs.


    Cette classe dispose plusieurs variantes de la methode getRGB() pour trouver la valeur d'un pixel donne ou d'un tableau de pixel de position et geometrie variable. Inversement setRGB() permet de mettre la valeur d'un pixel donne ou d'une surface de position et de geometrie variable.

    Grosso-modo une image en Java est une envellope qui englobe un modele de couleur le ColorModel (car il existe mille et une maniere de stocker/programmer des couleurs) et un buffer representant les pixels, le Raster. Il peut ou pas y avoir derriere la notion d'acceleration materielle et en general tant qu'on reste au niveau abstrait de l'image on en beneficie, si elle est disponible, mais on la perd des qu'on essaie d'acceder et de manipuler directement les donnees en accedant au Raster.

    Cela explique le peu de methode pour aller manipuler directement les pixels. Donc si tu preferes rester simple tu peux tres bien travailler uniquement sur un int[][] puis mettre a jour le contenu de la BufferedImage via setRGB() et ensuite dessiner cette image dans le Graphics dans lequel tu dessines via la methode drawImage() (en general on laisse le tout dernier paramettre de cette methode a null).

    Note : quelques soit le ColorModel de l'image, on a tendance en Java a utiliser des couleurs 32-bits qui sont representees par la classe Color et sont sockees dans des valeurs entiereres sous la forme ARGB soit AARRGGBB en hexadecimal (Java est big-endian/gros boutien quelque soit la platforme d'execution) :
    • A bits 31-24
    • R bits 23-16
    • G bits 15-8
    • B bits 7-0


    On peut donc faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Color c1 = ...
    int argb1 = c1.getARGB();
    int a = (argb1 >> 24) & 0xFF;
    int r = (argb1 >> 16) & 0xFF;
    int g = (argb1 >> 8) & 0xFF;
    int b = (argb1 >> 0) & 0xFF;
    [...]
    int argb2 = (a << 24) | (r << 16) | (g << 8) | (b << 0);
    Color c2 = new Color(argb2);
    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 à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Merci bouye.

    PImage est une classe qui semble être l'équivalent de Raster d'après ce que je comprends. Elle représente un rectangle dont on peut accéder et modifier individuellement chaque pixel, ou y dessiner des formes géométriques ou du texte.
    Processing est un langage de programmation basé sur le java (en fait, la seule implémentation de processing qui existe transforme le code processing en code java puis compile le code.) Il est surtout destiné aux artistes qui ne connaissent pas tellement la programmation, et se veut facile à utiliser.
    Pour simplifier, on peut dire que c'est du java simplifié, en supposant qu'on ne fait que des applets, et avec des primitives différentes. (Parfois, c'est aussi bête que Math.round qui devient round)

    Mais je me rend compte que il a trop de restriction pour mon projet de fin de baccalauréat (au sens québécois, c'est à dire, licence en France)

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par Arthur Rainbow Voir le message
    Processing est un langage de programmation basé sur le java (en fait, la seule implémentation de processing qui existe transforme le code processing en code java puis compile le code.) Il est surtout destiné aux artistes qui ne connaissent pas tellement la programmation, et se veut facile à utiliser.
    Pour simplifier, on peut dire que c'est du java simplifié, en supposant qu'on ne fait que des applets, et avec des primitives différentes. (Parfois, c'est aussi bête que Math.round qui devient round)
    Interessant, je ne connaissais pas. Hum, grosso-modo cela semble etre ce qu'il manquait toutes ces dernieres annees pour reellement concurrencer Flash et ce qu'ils ont reinvente avec tout ce "hype" autour de cette "chose" qu'est JavaFX...
    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
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Sinon dans le genre il y a également pulpcore qui est un framework pour les applets plutôt pas mal fichu
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/03/2008, 00h41
  2. comment créer une image sous forme d'eclipse(ronde)
    Par unix27 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/05/2005, 22h16
  3. [Image]Créer une image avec JAVA 1.1
    Par burno dans le forum 2D
    Réponses: 4
    Dernier message: 11/08/2004, 09h19
  4. [C#] Récupération d'une image depuis une table SQL Server
    Par borgfabr dans le forum Accès aux données
    Réponses: 10
    Dernier message: 08/04/2004, 13h20

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