Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / GUI / January 2008

Tip: Looking for answers? Try searching our database.

Creating image thumbnails is slow on Mac platform, suggestions for improvement?

Thread view: 
Bill - 26 Jan 2008 12:53 GMT
My java application is given a list of image files.  For each image, it
creates an image thumbnail and displays this thumbnail in a separate
JFrame.  The creation of these thumbnails is very slow compared to the
Mac Preview application.  Is there a way to speed this up?

Each thumbnail is displayed in a separate JFrame to allow the thumbnails
to be dragged and repositioned on the screen independently.  Each
thumbnail is converted to an ImageIcon and displayed in a JButton.  
Clicking on the button will rotate the image 90 degrees.

Here is the method which creates the JFrame.  I'd appreciate any
suggestions how I can improve performance speed.

private final static int
   FRAME_WIDTH  = 0,
   FRAME_HEIGHT = 20,
   THUMB_WIDTH  = 150,
   THUMB_HEIGHT = 225;

           
private JFrame createFrame(File file)
{
   Image image =
Toolkit.getDefaultToolkit().createImage(file.getPath());

   Image thumb = image.getScaledInstance(THUMB_WIDTH, THUMB_HEIGHT,
Image.SCALE_SMOOTH);
           
   JButton button = new JButton(new ImageIcon(thumb));
   button.addActionListener(myButtonListener);
           
   JFrame frame = new JFrame();
   frame.setTitle(file.getName());
   frame.setSize(FRAME_WIDTH + THUMB_WIDTH, FRAME_HEIGHT +
THUMB_HEIGHT);
   frame.setLayout(new BorderLayout());
   frame.add(button, BorderLayout.CENTER);
               
   return frame;
}
RedGrittyBrick - 26 Jan 2008 13:50 GMT
> My java application is given a list of image files.  For each image,
> it creates an image thumbnail and displays this thumbnail in a
> separate JFrame.  The creation of these thumbnails is very slow
> compared to the Mac Preview application.  Is there a way to speed
> this up?

When optimising, I'd first find out what part of your program is slow -
instrument it and/or profile it or benchmark it.

> Each thumbnail is displayed in a separate JFrame to allow the
> thumbnails to be dragged and repositioned on the screen
> independently.

To me that seems a bit unnecessary. I imagine it would be a great deal
faster to do your own 2d rendering. That way you're avoid instantiating
lots of JFrames.

> Each thumbnail is converted to an ImageIcon and displayed in a
> JButton. Clicking on the button will rotate the image 90 degrees.
>
> Here is the method which creates the JFrame.  I'd appreciate any
> suggestions how I can improve performance speed.

I believe a lot of similar applications cache the thumbnails in memory
and some save the thumbnails to disk - reading a thumbnail from disk has
to be faster than reading a large image and then resizing it.
Roedy Green - 27 Jan 2008 03:16 GMT
>My java application is given a list of image files.  For each image, it
>creates an image thumbnail and displays this thumbnail in a separate
>JFrame.  The creation of these thumbnails is very slow compared to the
>Mac Preview application.  Is there a way to speed this up?

Consider looking for a fast app, possibly not written in Java that has
batch facilities to convert images.  Then use the exec feature to
control it.

See http://mindprod.com/jgloss/exec.html

The hard way to do it is to study up on the format of the files you
are thumbnailing, then see if you can come up with a fast algorithm to
shrink them and write it in assembler and hook to it with JNI. This
might be feasible if the shrinking is always a power of two.  A power
of two algorithm would be faster than a generic one. Each pixel is a
weighted average of a set of surrounding pixels. Use shift for your
divide.

See http://mindprod.com/jgloss/jni.html
Signature

Roedy Green, Canadian Mind Products
The Java Glossary, http://mindprod.com



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.