File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Java in General and the fly likes Image Dimensions Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Image Dimensions" Watch "Image Dimensions" New topic

Image Dimensions

Trey German

Joined: Dec 05, 2002
Posts: 12
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

Joined: Dec 03, 2002
Posts: 19
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.
Jim Yingst

Joined: Jan 30, 2000
Posts: 18671
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:

"I'm not back." - Bill Harding, Twister
I agree. Here's the link:
subject: Image Dimensions
It's not a secret anymore!