【问题标题】:JFileChooser saving image isn't adding the file typeJFileChooser 保存图像未添加文件类型
【发布时间】:2013-03-24 05:22:48
【问题描述】:

我的程序允许您保存已制作的图像。我只需要将它保存为 png。

我目前有:

...
File file = fc.getSelectedFile();
try{ ImageIO.write(result.getImage(),"png",file);}
...

它保存了图像,我可以在我的程序中打开它,但它没有在其名称的末尾显示 .png。示例图像(给我们,不是由程序制作的)在我的 JLabel 上显示 .png,所以我知道这与我如何保存它们有关。

我已经尝试了here 的答案,但没有奏效。

我该如何解决这个问题?

(还有一个附带问题:如果 write 只是要忽略它,那么即使放置“png”又有什么意义?)

谢谢!

【问题讨论】:

  • 写入磁盘的内容是什么?扩展名为 .png 的文件或不带扩展名的文件 ?
  • 没有它的文件。打印出图片的文件路径只是以名字结尾,没有扩展名。

标签: java swing file-io javax.imageio


【解决方案1】:

来自the documentation

使用支持给定格式的任意ImageWriter 将图像写入文件。如果已经存在 File,则丢弃其内容。

...

formatName - 一个 String 包含[sic]格式的非正式名称。

所以"png" 作为第二个参数告诉ImageIO 如何编码文件,而不是文件扩展名。您可以进入 MS Paint 并将图像保存为.jpg,然后将文件重命名为.png,但内部仍然是.jpg.png 扩展名只是一个信号(对用户来说,真的)它是文件的类型。

您链接到的答案看起来应该有效。 “不起作用”是什么意思?你有错误吗?一个警告?只是不加名字吗?

另外,请尝试检查您的文件扩展名是否显示(在 Windows 中:工具菜单 → 文件夹选项...菜单项 → 查看 选项卡 → 取消选中“隐藏已知文件类型的扩展名”复选框;在 Mac 上,我认为它位于 Finder 菜单 → Preferences... 菜单项中)。

【讨论】:

  • 当它在我程序的其他地方的 JLabel 中打印出来时,它只是不会将 .png 添加到文件名中。它运行没有错误。我正在通过 Linux 终端执行此操作...但是当我在程序中打开图像时,它仍然不显示扩展名,而给我们的扩展名却显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
相关资源
最近更新 更多