views:

703

answers:

2

I want to create a serve resampled (downsized) version of images using jsp. The original images are stored in the database as blobs. I want to to create a jsp that serves a downsampled image with decent quality (not pixelated) as per the passed image width/height (e.g. getimage.jsp?imageid=xxxx&maxside=200) . Can you point me to a opensource api or code that I can call from the jsp page?

+1  A: 

Java already contains libraries for image manipulation. It should be easy to resize an image and output it from a JSP.

This servlet looks like it does a very similar thing to what you want your JSP to do.

Phill Sacre
+1  A: 

Is there anything wrong with the built-in Image.getScaledInstance(w, h, hints)? (*)

Use hints=Image.SCALE_SMOOTH to get non-horrible thumbnailing. Then use an ImageIO to convert to the required format for output.

*: well yes, there is something wrong with it, it's a bit slow, but really with all the other web overhead to worry about that's not likely to be much of an issue. It's also not the best quality for when upscaling images, where a drawImage with BICUBIC renderinghint is more suitable. But you're talking about downscaling only at the moment.

Be sure to check the sizes passed in so that you can't DoS your servlet by passing in enormous sizes causing a memory-eatingly-huge image to be created.

bobince
One suggestion: Cache the result somewhere so you don't have to do it again.
Ken Gentle