【问题标题】:Create image from local relative path in java从java中的本地相对路径创建图像
【发布时间】:2014-10-24 00:55:01
【问题描述】:

我在 netbeans 中有一个应用程序,其文件夹与包含所有图像的应用程序位于同一目录中,并且我在上传图像时保存绝对路径的类中还有一个属性 String。 如何获取同一个 jar 中图像的相对路径以将其存储在字符串中? 因为那时我从 URL 字符串创建图像。

编辑:

我有一个 jar,包括一个逻辑包、一个演示包(带有 swing)和一个图像包。在我尝试做的逻辑中:

String img = new String("\src\Images\Image.jpg"):
ImageIcon icon = new ImageIcon(img);
Icon imagen = new ImageIcon(icon.getImage().getScaledInstance(photo.getWidth(),photo.getHeight(),Image.SCALE_DEFAULT));
photo.setIcon(imagen);

【问题讨论】:

  • 能不能展示一下你的jar结构,包括你的图片在哪里,你的class文件在哪里。然后显示您用来尝试处理图像资源的代码。
  • 您需要向我们展示更多内容,包括您的 jar 的实际结构,以及您尝试提取图像的实际代码。
  • 再次,您将希望向我们展示您的 jar 的实际结构——您仍然没有这样做(为什么?)。此外,不要将字符串传递给 ImageIcon 的构造函数,因为它会尝试将图像作为文件获取,而是使用 ImageIO.read(...) 将图像作为资源获取。如果您显示更多代码和更多 Jar 结构,我们可以更好地帮助您

标签: java image netbeans path


【解决方案1】:

建议:

  • 切勿使用new String(...) 构造函数创建新字符串。没有必要这样做,你只是不必要地浪费资源。而是简单地使用字符串文字。
  • 不要使用文件来获取保存在 Jar 文件中的图像。 Jar 文件不包含 Files。
  • 通过将字符串传递到 ImageIcon 的构造函数中,您正在这样做(检查 API),您正在尝试将图像作为文件获取。
  • 改为使用ImageIO.read(...) 和资源来获取图像。
  • 资源路径将全部取决于您的 Jars 结构,您尚未向我们展示的东西。

例如,

String path = "\Images\Image.jpg"; // this path may not be correct
InputStream imgStream = getClass().getResourceAsStream(path);
BufferedImage img = ImageIO.read(imgStream);
// process your image here if desired
ImageIcon icon = new ImageIcon(img);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2016-09-28
    • 2015-02-11
    • 1970-01-01
    相关资源
    最近更新 更多