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 :

pb initialisation BufferedImage


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut pb initialisation BufferedImage
    Bonjour, voilà je vous poste mon code et l'erreur que j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.net.URL;
    import java.net.URLConnection;
     
    public class LectureImage 
    {
    	public LectureImage(URL url)
    	{
    		this.url=url;
    	}
     
    	public Image Connection()
    	{
    		try
    		{
    			URLConnection urlC= url.openConnection();
    			System.out.println(url);
    			//Accès au toolkit
    			java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
    			//lecture de l'image
    			Image image = toolkit.getImage(url);
    			BufferedImage bufferedImage = new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB );
    --------------->> l'erreur se situe à la création de mon BufferedImage
     
    			//Lecture de tous les pixels
    			int w = bufferedImage.getWidth();
    			int h = bufferedImage.getHeight();
    			System.out.println(w+"	"+h);
    			int[] rgbs = new int[w*h];
    			//On crée l'espace neccessaire
    			bufferedImage.getRGB(0,0,w,h,rgbs,0,w);
     
    			return image;
    		}
    		catch (IOException e)
    		{
    			e.printStackTrace();
    			return null;
    		}
    	}
    Voilà l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Exception in thread "main" java.lang.IllegalArgumentException: Width (-1) and height (-1) cannot be <= 0
    	at java.awt.image.DirectColorModel.createCompatibleWritableRaster(Unknown Source)
    	at java.awt.image.BufferedImage.<init>(Unknown Source)
    	at LectureImage.Connection(LectureImage.java:45)
    	at TP1Main.main(TP1Main.java:31)
    Donc mon problème c'est que l'image je ne veux pas la sauvegarder en un quelconque format je voudrais travailler directement dessus.
    Le vrai problème c'est que je ne sais pas comment récupérer le width et le height de mon image avant de créer le BufferedImage car il faut apparemment passer un ImageObserver en paramètre mais bon je sais pas trop comment ça marche.

    Une solution je pense serait de sauvegarder mon image puis de travailler sur la copie pour récupérer le width et le height mais bon se serait lourd je trouve.

    Si quelqu'un a une idée, merci beaucoup !!

  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
    Pense a la balise code s'il te plait, ca rend les choses plus lisibles.
    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
    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
    Quand tu recuperes l'image de cette maniere, elle est chargee de maniere asynchrone, ton image n'a donc pas encore sa taille.

    Oui si tu veux continer avec cette methode il te faut utiliser ImageObserver et ne declencher la sauvegarde que quand :

    - tu connais les dimensions de l'image source.
    - ET tu as finis de telecharger TOUS les pixels de l'image source.
    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

  4. #4
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    merci de tes informations. Le problème venait du fait que l'image ne devait pas être entièrement chargée.

    Avec cette ligne, j'ai dit au revoir au problème, merci bcp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    image = new ImageIcon(image).getImage();

    Juste avant de créer mon BufferedImage.

    Désolé de vous avoir dérangé pour si peu [/code]

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

Discussions similaires

  1. [Servlet] Fichiers d'initialisation
    Par david71 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 03/09/2003, 13h47
  2. Créer et initialiser un composant TStatusBar :help:
    Par James_ dans le forum C++Builder
    Réponses: 10
    Dernier message: 21/08/2003, 08h52
  3. [servlet] initialisation d'objets
    Par tiPouick dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 05/08/2003, 12h12
  4. Initialisation de XMLModule
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 10
    Dernier message: 01/04/2003, 10h08
  5. initialisation Directinput avec delphi
    Par Madmaxx dans le forum DirectX
    Réponses: 1
    Dernier message: 21/02/2003, 17h37

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