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

Multimédia Java Discussion :

Créer des images


Sujet :

Multimédia Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Créer des images
    Bonjour,

    Je suis un novice en Java, et je dois dire que j'ai un peu du mal à faire la différence entre les différents types d'images : Graphics, Graphics2D, Image, BufferedImage...

    Tout d'abord, j'aimerais savoir comment faire pour manipuler une image pixel par pixel et l'afficher à l'écran. Ensuite, étant donné que l'applet en question sera intégré dans une page web, j'aimerais pouvoir proposer aux utilisateurs d'enregistrer l'image en question sur le disque dur...

    Pour la manipulation d'images, j'utilise actuellement une classe héritée de JPanel où j'ai surchargé la fonction "paint", et où pour créer chaque pixel je dessine un rectangle de dimension 1x1... Autant dire que c'est assez bourrin !

    Merci d'avance pour vos réponses !

    PS : Désolé si ma question a déjà été posée, j'ai déjà passé plusieurs heures à chercher

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Pour afficher une image dans une fenetre tu peux utiliser la classe ImageIcon ça te permettra de l'afficher.
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    En fait, mon problème n'est pas l'affichage mais surtout la création d'une image et sa modification pixel par pixel

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    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 845
    Points : 22 859
    Points
    22 859
    Billets dans le blog
    51
    Par défaut
    Graphics est un un contexe graphique, a savoir une abstraction d'une surface de dessin qui peut etre une image memoire, un ecran, une imprimante, un fichier (pour certains formats d'images vectoriels et certaines API). Ca permet de dessiner independament de la sortie. En general on utilisera cette maniere pour dessiner car on cherche toujours a dessiner independament de la sortie (voir java.awt et java.awt.font).

    Graphics2D est une extension de Graphics qui supporte Java2D (permet de faire du dessin comme en PostScript/PDF/... a l'aide de primitives de dessin vectoriel et autre, voir java.awt.geom et java.awt.image). La quasi-totalite des Graphics dans Java sont des Graphics2D ; tu peux donc faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphics2D g2d = (Graphics2D)g;
    On peut egalement specifier des indices de rendu (RenderingHints) qui influent sur le resultat, utiliser des textures et gradients, dessiner des courbes. C'est egalement la classe que tu utiliseras le plus pour dessiner independament de la sortie.

    Une Image est la classe de base representant des image (tous types confondus). Il est bien sur possible d'obtenir un Graphics a partir d'une image.

    Une BufferedImage est une classe plus recente qui represente une Image en memoire centrale dont tu peux directement manipuler les pixels avec les methodes setRGB() et getRGB(). Les variantes de ces methodes permettent de manipuler soit un pixel, soit un ensemble de pixel. Il est en plus possible d'obtenir directement un Graphics2D a partir d'une telle image. Il existe egalement des operations qui permettent d'effectuer des filtrages (flou, nettete, etc... voir ConvolveOp, BufferedImageOp, etc... ) sur ce genre d'image ou de manipuler leur palette (suivant leur ColorModel) (voir java.awt.image)

    Note que quand les BufferedImage sont compatibles avec l'affichage celui-ci est plus rapide (faire des recherches sur le forum avec "image compatible gfx").

    Une VolatileImage est une image qui est chargee dans la memoire de la carte video pour une acceleration maximum. Mieux vaut trouver des exemples sur les methodes correctes pour les utiliser. Comme leur nom l'indique leur contenu est volatile et peut disparaitre. Dans la majorite des cas tu ne les utiliseras pas.

    Dessiner un pixel comme tu le fais est une methode correcte quand tu utilise un Graphics. Attention cependant les resultats peuvent varier celon les indices de rendu qui sont actifs (surtout RenderingHints.KEY_ANTIALIASING).

    Pour ecrire l'image sur le disque tu peux utiliser javax.imageio.ImageIO ou des lib externes (Batik ou VectorGraphics ou autre pour les formats vectoriels) ou ta propre lib d'ecriture si tu connais bien un format d'image (le PBM, PGM et PNM sont suffisement simples pour pouvoir les ecrire soi-meme).
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour ta réponse ! C'est bien plus clair pour moi maintenant

    Par contre, ne devrais-je pas plutôt utiliser BufferedImage si cela permet de manipuler les pixels sans bricolage ? Ou les performances seraient similaires à celle de Graphics ?

    Sinon, je reviens à mon autre question : est-il possible de proposer aux utilisateurs d'enregistrer l'image produite ?

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    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 845
    Points : 22 859
    Points
    22 859
    Billets dans le blog
    51
    Par défaut
    J'ai rajoute la reponse a ta question en fin du message. CEPENDANT une Applet non-signee n'a pas le droit d'ecrire sur le disque local de son utilsateur. Si c'est ce que tu veux faire, il te faudra donc donc signer numeriquement ton Applet. Il me semble qu'il est egalement possible de modifier les fichier Policy du JRE mais il faudra alors le faire sur tous les postes clients et ce n'est probablement pas souhaitable pour des raisons de securite (note que Vista en rajoutant une couche (au niveau de la securite), j'ignore donc si une Applet meme signee marche correctement sous Vista).

    Concernant la manipulation pixel a pixel ca depent vraiment de ce que tu veux faire mais moi je n'en fais jamais ; je dessine principalement via des Graphics2D. Peut-etre qu'effectivement, dans ton cas a toi, manipuler une BufferedImage peut s'averer plus pratique.
    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

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    En effet, dans mon cas je pense que la manipulation pixel par pixel n'est pas superflue car il s'agit par exemple de générer des images avec des formules mathématiques...

    Par contre, les contraintes pour l'enregistrement m'embêtent un peu. M'enfin en tout cas le problème est résolu !

    Merci !

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    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 845
    Points : 22 859
    Points
    22 859
    Billets dans le blog
    51
    Par défaut
    Pour generer une fractale mieux vaut en effet manipuler un int[] et utiliser la methode setRGB() qui va bien a mon sens.

    Plutot qu'une Applet tu peux egalement voir pour creer une application et utiliser Java Web Start pour la distribution. Mais la aussi de toute maniere ca marche mieux quand ton JAR est numeriquement signe. Note que keytool et jarsigner (outils du JDK) te permet de creer toi-meme un certificat temporaire de 6 mois, mais tes utilisateurs seront bien sur avertit que l'autenticite de ce certificat ne peut pas etre verifie.

    Voir Signing JAR Files With a Test Certificate
    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. créer des images 8 bits en C#
    Par riadh10 dans le forum C#
    Réponses: 4
    Dernier message: 13/12/2009, 19h12
  2. créer des images de raccourcis .ink
    Par boadog dans le forum Windows XP
    Réponses: 2
    Dernier message: 31/03/2007, 11h41
  3. Créer des images en fonction de l'url
    Par kevinf dans le forum Langage
    Réponses: 16
    Dernier message: 12/08/2006, 19h38
  4. créer des images monochromes
    Par destructive dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 21/05/2006, 22h46
  5. Programme qui créer des images d'après une vidéo
    Par snoopy69 dans le forum Vidéo
    Réponses: 7
    Dernier message: 03/04/2006, 08h33

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