Taille d'une image

zauz Messages postés 4 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 19 mars 2004 - 19 mars 2004 à 14:53
Asrull Messages postés 79 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 17 novembre 2004 - 10 juin 2004 à 10:59
bonjour, j'ai un problème avec les images;
Si j'utilise un fichier jpg, l'image s'affiche sans problème dans le canvas de l'appli. Par contre je n'arrive pas à récupérer la largeur et la hauteur de l'image.
image.getWidth(obs) et id pour height renvoient toutes les deux -1.

Comment faire pour connaitre ces dimensions ?
merci pour votre aide

Zauz

3 réponses

Asrull Messages postés 79 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 17 novembre 2004 1
10 juin 2004 à 10:59
ça y est j'le tiens le truc qui marche pas zauz, en fait ç'est parceque l'image n'est pas encore complêtement chargée quand on l'interroge sur ses dimensions ... dans l'API ils disent que ça retourne -1,-1 si l'image n'est pas complètement chargée. Alors du coup, il faut utiliser MediaTracker pour vérifier que l'image a fini d'être chargée

import java.awt.Image;
import java.awt.Graphics;
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.MediaTracker;

public class JImage extends JPanel
{
private String nomFichier;
private Image image;
private Dimension dimImage;
private MediaTracker tracker;

public JImage (String nomFichier)
{
this.nomFichier=nomFichier;
image=getToolkit().getImage(nomFichier);
tracker=new MediaTracker(this);
tracker.addImage(image,0);
try{tracker.waitForID(0);} catch (InterruptedException e) {}
dimImage=new Dimension((int)(image.getWidth(this)),(int)(image.getHeight(this)));
System.out.println(dimImage);
setPreferredSize(dimImage);
}

public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(image,0,0,this);
}

public Dimension getDimImage()
{
return dimImage;
}

}

class Test extends JFrame
{
JImage image;

Test(String s)
{
super("Test de JImage");
this.setContentPane(image=new JImage(s));
}

public static void main(String[] argv)
{
Test aff = new Test("C:\\j2sdk1.4.2_04\\Dev\\Interfaces graphiques\\cretin.jpg");
aff.pack();
aff.setVisible(true);
}
}

Oobaï TaPou !
1
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
22 mars 2004 à 08:33
:big) Neodante :big)

Il me semble que tu dois passer par une class utilitaire/toolkit mais je ne me rappel plus laquelle ... à chercher dans les packages image ...
@+

[Responsable www.neogamedev.com]
0
Asrull Messages postés 79 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 17 novembre 2004 1
10 juin 2004 à 10:05
arrrgh, en voyant le titre du msg je me suis dit "ENFIN, ENFIN JE VAIS TROUVER DES REPONSES, LA VERITE EST ICI", g le même problème que toi zauz, je te refile mon code si ça peut t'informer sur le getToolkit(), mais la Dimension dimImage me fait (-1,-1) ... galère

import java.awt.Image;
import java.awt.Graphics;
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JFrame;

public class JImage extends JPanel
{
private String nomFichier;
private Image image;
private Dimension dimImage;

public JImage (String nomFichier)
{
this.nomFichier=nomFichier;
image=getToolkit().getImage(nomFichier);

dimImage=new Dimension((int)(image.getWidth(this)),(int)(image.getHeight(this)));

System.out.println(dimImage);
setPreferredSize(dimImage);
}

public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(image,0,0,this);
}

public Dimension getDimImage()
{
return dimImage;
}

}

Oobaï TaPou !
0
Rejoignez-nous