Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Image Dimensions

 
Trey German
Greenhorn
Posts: 12
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm trying to get the width/height of an image.
The image is named 'image'. I'm using image.getWidth(this); (same for height) and it returns -1. Anyone got any tips?
 
Brian McCallister
Greenhorn
Posts: 19
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You need to use java.awt.Image (or the equivalent, look up in the javadocs). Notably, if you are running under *nix wihout an X session open you will need to specify headless execution on the commandline or it will get crnaky.
-Brian
 
Jim Yingst
Wanderer
Sheriff
Posts: 18671
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The java.awt.Image API explains why -1 is returned. This API is actually rather tricky - it's asynchronous. This means that you can (and often do) get an Image object that's not yet fully loaded. Methods like getHeight() may return -1 to indicate that the height() data is not yet available - try again later. The class was designed this way because frequently you might be downloading images from a slow source, and you have the option to use those parts of the image data that are available, as they become available, rather than waiting for the whole thing. (A typical example - if you're laying out a web page, you can set aside space for an image once you know it's height and width - even though you can't display the image yet.) Anyway, in order to use Image effectively you typically have to make use of the ImageObserver class to create an object that will notify you when the data you need is loaded. Here's a class I made some time ago to do this:
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic