java-Toolkit.getImage()的正确路径是什么?

我需要在JSF Web应用程序中上传图像文件并为上传的文件生成缩略图.原始图像存储在服务器上的/ home / myname / tomcat / webapps / uploads中,而缩略图存储在/ home / myname / tomcat / webapps / uploads / thumbs中.我正在使用从philreeve.com复制的缩略图生成器类.

我已经在BalusC的帮助下成功上传了文件.但是使用Toolkit.getImage(),我无法访问该图像.

我使用了上载文件的绝对路径,如下所示:

inFilename = file.getAbsolutePath();

缩略图生成器的相关代码为:

public static String createThumbnail(String inFilename, String outFilename, int largestDimension) {
    ...
    Image inImage = Toolkit.getDefaultToolkit().getImage(inFilename);
    if (inImage.getWidth(null) == -1 || inImage.getHeight(null) == -1) {
        return "Error loading file: \"" + new File(inFilename).getAbsolutePath() + "\"";
    }
    ...
}

由于我已经在使用绝对路径,所以我不明白为什么它不起作用.我也为inFilename使用了以下值,但是我总是得到“错误加载文件…”.

> /home/myname/tomcat/webapps/uploads/filename.ext
> /uploads/filename.ext

但是我确实检查了目录,并且图像在那里. (我使用/home/myname/tomcat/webapps/uploads/filename.ext上传,并且可以正常工作.)该目录中图像的正确路径是什么?谢谢.

更新资料

我通过使用以下代码来工作:

Image inImage = ImageIO.read(new File(inFilename));

我仍然不明白为什么Toolkit.getImage()无法正常工作.

解决方法:

您确定这是JPEG文件吗?使用图像查看器来确保文件在上传过程中没有发生任何不良情况(或从头开始是图像).

另外,使用新的File(inFilename).exists()来确保路径正确.我还建议在错误消息中打印新的File(inFilename).getAbsolutePath(),因为相对路径可能会伤害您.

也就是说,其余代码看起来正确.

上一篇:GUI编程AWT,面板,布局管理器笔记


下一篇:java-全屏框架图像加载