Skip to Main Content

Java Programming

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

IIOException: Can't read input file!

807589Jul 15 2008 — edited Jul 15 2008
Hi all,

I have a incomprehensible problem. I have a java application wich manipulate images. This application works fine with a desktop environment but when I try to migrate it on production server (without X), a exception is catch...
javax.imageio.IIOException: Can't read input file!
        at javax.imageio.ImageIO.read(ImageIO.java:1279)
        at FaceplateBuilder.fillImageByClients(FaceplateBuilder.java:95)
        at FaceplateBuilder.createPack(FaceplateBuilder.java:68)
        at FaceplateBuilder.run(FaceplateBuilder.java:39)
This is the following code...
File tmp = new File("/tmp/test.jpg");
BufferedImage in = ImageIO.read(tmp);
The file /tmp/test.jpg exist.

-----

Here are all tested solutions without success :
*I've tried to upgrade the java version (1.5.0_14 to 1.6.0_06). 1.6.0_06 is the desktop environment configuration.
* I read this page: [Using Headless Mode in the Java SE Platform|http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/] and I try to launch java with java.awt.headless=true variable.
* I have install the [X11 dev library|http://javatechniques.com/public/java/docs/hosting/headless-java-x11-libraries.html]. (apt-get install libice-dev libsm-dev libx11-dev libxp-dev libxt-dev libxtst-dev)
* I have changed the ImageIO code by following :
Image tmp = loadImageFile("/tmp/test.jpg");
BufferedImage in = toBufferedImage(tmp);

[...]
public static BufferedImage toBufferedImage(Image image) {
		if (image instanceof BufferedImage) {
			return ((BufferedImage) image);
		} else {
			BufferedImage bufferedImage = new BufferedImage(image
					.getWidth(null), image.getHeight(null),
					BufferedImage.TYPE_INT_RGB);
			Graphics g = bufferedImage.createGraphics();
			g.drawImage(image, 0, 0, Color.WHITE, null);
			g.dispose();
			return (bufferedImage);
		}
	}
	
	public static Image loadImageFile(String imgFile) {
		Image img = Toolkit.getDefaultToolkit().getImage(imgFile);
		MediaTracker mediaTracker = new MediaTracker(new Container());
		mediaTracker.addImage(img, 0);
		try {
			mediaTracker.waitForID(0);
		} catch (InterruptedException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
		return (img);
	}
This code catches a new error...
java.lang.IllegalArgumentException: Width (-1) and height (-1) cannot be <= 0
        at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:999)
        at java.awt.image.BufferedImage.<init>(BufferedImage.java:314)
        at FaceplateBuilder.toBufferedImage(FaceplateBuilder.java:122)
        at FaceplateBuilder.fillImageByClients(FaceplateBuilder.java:95)
        at FaceplateBuilder.createPack(FaceplateBuilder.java:73)
        at FaceplateBuilder.run(FaceplateBuilder.java:44)
I think it's the same problem... The Image can't be loaded and I don't know why ! This problem make me crazy so I tried to post here.

Thanks in advance
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 12 2008
Added on Jul 15 2008
4 comments
7,445 views