This discussion is archived
2 Replies Latest reply: Aug 12, 2010 6:21 AM by 796280 RSS

Image object getWidth() and getHeight() returning -1

796280 Newbie
Currently Being Moderated
Hello all,

I'm currently unit testing a pretty simple utility that calculates a new image position, given a handful of parameters (including image width and height).

The problem I'm running into is this:
The image width/height don't always load immediately. My only clue so far from searching the web is this:
which states
Determines the width of the image. If the width is not yet known, this method returns -1 and the specified ImageObserver object is notified later. 
In my JUnit test harness, I have the following code to load my images, using Toolkit:
public static final String TEST_IMG_1_PATH = "images/apple_logo.png";
public static final String TEST_IMG_2_PATH = "images/dude.png";
private Image testImage1, testImage2;
public void setUp() throws Exception {
     testImage1 = Toolkit.getDefaultToolkit().getImage(TEST_IMG_1_PATH);
     testImage2 = Toolkit.getDefaultToolkit().getImage(TEST_IMG_2_PATH);
     // check the image size to see if they are fully loaded:
Because the utility method I'm testing heavily depends on the image size, my tests intermittently fail. When I run this, I typically get -1 for all of the image dimension checks (see the above println()s).
Even with these "-1" results, my test still passes... which means at some point before the test assert() statement executes, the images do become fully loaded.

My question is: What can I do to make sure my image is loaded fully before I do anything with it? Is there any elegant way to handle this? Am I doing something wrong?

Thanks for your time.