Progress callback of image load

Hi,

I'm using java.awt.image.BufferedImage to load images from my local web server. The problem is that loading these images can take a long time and my applet just freezes. Until it's done. I'm loading them like:

        try
        {
            Buffered img = ImageIO.read(this.getClass().getResourceAsStream(("myfile.jpg")));
        }

Is there someway to load it in another thread, and get progress notifications, like every %10 or something? This way I can draw a graphic for the user of the image loading instead of just having the browser lockup until it's done.

Thanks
DJ_AM_JuiceboxAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
objectsConnect With a Mentor Commented:
you can use MediaTracker

http://java.sun.com/javase/6/docs/api/java/awt/MediaTracker.html

but that won't tell how much has been loaded.

or use a listener (and load the image in a different thread)

http://java.sun.com/mailers/techtips/corejava/2007/tt0207.html#2
0
 
DJ_AM_JuiceboxAuthor Commented:
Ok I'll check those out, the lsitener sounds more promising.

One thing I don't get about this process - my applet loads 6 high res images when it starts up (probably 400 x 600 pixels each). I only am displaying one of them at startup though, the others are just sitting in memory waiting to be shown. This initial load up takes like 20 seconds. What is the bottleneck here - is it that my webserver is just really slow in loading the local images? Or is the java applet trying to move the loaded images into the client's memory, so while I'm not necessarily displaying the images yet, java is already trying to transfer the images into the client browser's memory? Is that how it works?

Thanks
0
 
objectsCommented:
hard to say, the vm is going to take time to load initially.
plus downloading the images is going to take time, you can jar them up to improve performace as only one http request would be required.
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
CEHJCommented:
Where are the images. Are they where the applet is running (the client) or are they where the applet originates (the server)?
0
 
DJ_AM_JuiceboxAuthor Commented:
The images are where the applet originates (the server). So I'm assuming they are loaded into the client's memory (even though they're not yet displayed) which means they need to be downloaded by the client?
0
 
objectsCommented:
thats correct, which is going to take time (on top of time to load classes/jars and start vm)
0
 
DJ_AM_JuiceboxAuthor Commented:
How can one figure out about how long it takes to load classes/jars? Is it significant at all? At what point does it become really slow, etc? How can you improve load time of the classes etc?

My project has about 8 class files, the largest of which is 8kb.
0
 
objectsCommented:
how longs a piece of string :)
Depends on the size, and the network connection.
In your case though it sounds like it would not be significant, and the loading of the vm and images would be the signioficant parts.

one way to improve loading would be to jar up classes, that way only a single http request would be needed instead of 8.
0
 
CEHJCommented:
Use a URLConnection to get the image, then you'll know how big it is, which is essential for a percentage progress bar
0
 
objectsCommented:
> Use a URLConnection to get the image, then you'll know how big it is, which is essential for a percentage progress bar

unnecessary and will make it sloooowwwwer
0
 
CEHJCommented:
>>unnecessary

?
0
All Courses

From novice to tech pro — start learning today.