File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Java in General and the fly likes Thumbnail Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of REST with Spring (video course) this week in the Spring forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Thumbnail" Watch "Thumbnail" New topic


Stephen Justus

Joined: Jul 20, 2004
Posts: 2
I need some help.
I am using Tomcat version 4.1.24, jdk1.4.1_05, and Windows.
The source below works fine but when I try to use it on Tomcat version 4.1.27, jdk1.4.1_05, and Linux it doesnt work.
Any ideas why?

package common;

import com.sun.image.codec.jpeg.*;
import java.awt.*;
import javax.swing.ImageIcon;
import java.awt.image.*;

public class Thumbnail extends BaseServlet{
public static void main(String[] args) throws Exception {
try {
// load image from INFILE
Image image = Toolkit.getDefaultToolkit().getImage(args[0]);

MediaTracker mediaTracker = new MediaTracker(new Container());
mediaTracker.addImage(image, 0);
// determine thumbnail size from WIDTH and HEIGHT
int thumbWidth = Integer.parseInt(args[2]);
int thumbHeight = Integer.parseInt(args[3]);
double thumbRatio = (double)thumbWidth / (double)thumbHeight;
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
double imageRatio = (double)imageWidth / (double)imageHeight;
if (thumbRatio < imageRatio) {
thumbHeight = (int)(thumbWidth / imageRatio);
} else {
thumbWidth = (int)(thumbHeight * imageRatio);
// draw original image to thumbnail image object and
// scale it to the new size on-the-fly
BufferedImage thumbImage = new BufferedImage(thumbWidth,
thumbHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = thumbImage.createGraphics();
graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
// save thumbnail image to OUTFILE
BufferedOutputStream out = new BufferedOutputStream(new
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.
int quality = Integer.parseInt(args[4]);
quality = Math.max(0, Math.min(quality, 100));
param.setQuality((float)quality / 100.0f, false);
} catch(Exception e) {
Mag Hoehme
Ranch Hand

Joined: Apr 07, 2002
Posts: 194
Hi Stephen,

how do you know that it does not work? Does the piece of code throw any exceptions (if yes, which one)?

I suggest that you change the catch clause and replace it by something like

The stack trace may tell you what exactly is going wrong.

pascal betz
Ranch Hand

Joined: Jun 19, 2001
Posts: 547
perhaps you get some problems with the file permissions ?

Mark Stein
Ranch Hand

Joined: May 20, 2002
Posts: 75
Is the linux box running headless? And if so, is it configured to handle java graphics? Java needs a video card, or proper configuration to run graphics.
I agree. Here's the link:
subject: Thumbnail
It's not a secret anymore!