2 Replies Latest reply: Aug 12, 2010 8:21 AM by 796280 RSS

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

      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.