[Image]probleme getWidth getHeight

probleme getWidth getHeight [Image] - Java - Programmation

Marsh Posté le 03-02-2008 à 19:13:05    

Bonjour @ tous
 
J'ai un petit problème avec les fonctions getWidth et getHeight de la classe Image.
 
J'initialise une image et j'affiche sa largeur:
 
 

Code :
  1. ...
  2. Toolkit toolkit = Toolkit.getDefaultToolkit();
  3. Image im = toolkit.getImage("../../Images/FFAC.jpg" );
  4. System.out.println(im.getWidth(null));
  5. ...


 
 
Avec le compilateur fourni avec Fedora 7, ça marche parfaitement. avec un java -version j'ai ça:
Code :
 

Code :
  1. java version "1.5.0"


 
J'ai ensuite installé jdk 1.5.0.14. Une fois compilé et exécuté, cela m'affiche comme taille "-1". De même pour la hauteur (fonction getHeight).
 
J'ai vérifié l'adresse de l'image, elle est bonne.
 
Je ne comprend pas.
 
Merci d'avance pour votre aide

Reply

Marsh Posté le 03-02-2008 à 19:13:05   

Reply

Marsh Posté le 03-02-2008 à 20:01:15    

Probleme résolu
Il fallait ajouter image = new ImageIcon(image).getImage();

Reply

Marsh Posté le 15-05-2008 à 15:43:51    

Bonjour, j'ai, en ce moment, le même problème. Mais de mon coté de cré bien mon image comme suit :  

Code :
  1. Image image=new ImageIcon(this.logo).getImage();
  2. this.width=image.getWidth(null);
  3. this.height=image.getHeight(null);


 
la variable this.logo est le chemin d'accès de mon image (elle est valide je l'ai vérifié).
 
Donc comme l'intervenant précédent, je récupère comme hauteur et largeur de mon image "-1"
 
Je ne comprends pas comment récupérer les dimension d'une image en java !
 
Quelqu'un aurait-il une idée ?

Reply

Marsh Posté le 18-05-2008 à 11:41:19    

J'ai finalement laissé tombé le développement de l'application java pour le transformer en applet.
 
Dans cette applet je réussi à récupérer le width et le height d'une image png, mais uniquement dans le code (méthode) de l'applet (public void paint()).  
 
Mon gros soucci c'est que j'appel des objets dans cette applet pour divers traitements et j'ai également besoin de récupérer les dimension d'images png dans ces classes annexes. J'ai essayé de passer en arguments à ces classes mon objet applet.
 
Je suis sur que l'objet est bien passé car je peux utiliser ses méthodes dans mes classes annexes. Cependant les fct getWidth() et getHeight() de l'objet image de l'applet me renvoie toujours "-1"
 

Code :
  1. public class board
  2. {
  3. public board(Applet oApplet)
  4. {
  5.  this.logo="chemin image";
  6.  this.oImage=oApplet.getImage(oApplet.getCodeBase(),"icons/"+this.logo);
  7.  this.width=this.oImage.getWidth(oApplet);
  8.  this.height=this.oImage.getHeight(oApplet);
  9.  System.out.println(this.width); // => -1  
  10.  System.out.println(this.height); // => -1  
  11. }
  12. }
  13. public class chessApplet extends Applet
  14. {
  15. board myBoard;
  16. public void start()
  17. {
  18.  myBoard=new board (this);
  19. }
  20. public void paint(Graphics screen)
  21. {
  22.  myBoard.getBoard().display(screen);
  23.  Image oImage=getImage(getCodeBase(),"icons/wrook.png" );
  24.  screen.drawString(Integer.toString(oImage.getWidth(this)),10,10); // => 33                
  25.  screen.drawString(Integer.toString(oImage.getHeight(this)),10,10); // => 33
  26. }
  27. }


 
est-il impossible d'accèder à certaines propriétés de l'applet à l'extérieur de celle-ci ?

Reply

Marsh Posté le 25-06-2008 à 22:18:51    

Tu récupères -1 parce que ton image n'est pas encore chargée.
Solution crade (il faut être sûr que l'image peut être chargée) :

Code :
  1. Image i = Toolkit.getDefaultToolkit().getImage(file.getAbsolutePath());
  2.             while (i.getWidth(null) == -1)
  3.                 try {
  4.                     Thread.sleep(100);
  5.                 } catch (InterruptedException e) {}


solution propre :
utilise un imageobserver pour être prévenu quand l'image sera chargée : je peux fournir le code sur demande
 
a++;


Message édité par matheret le 25-06-2008 à 23:23:11
Reply

Marsh Posté le 25-06-2008 à 23:37:30    

Plus simple :

Code :
  1. MediaTracker tk = new MediaTracker(new Label());
  2. tk.addImage(img, 1);
  3. tk.waitForID(1);
  4. if (tk.isErrorID(1))
  5.     ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed