有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java什么是工具箱的正确路径。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()不起作用


共 (1) 个答案

  1. # 1 楼答案

    你确定是JPEG文件吗?使用图像查看器确保文件在上传过程中没有出现任何问题(或者一开始就是一个图像)

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

    也就是说,代码的其余部分看起来是正确的