Javax ImageIO IIOException 显然没有原因

2024-02-18

大家好,我有一个 Java 问题。对于我的高级研究课程,我已经基本完成,但我只需要分析我生成的图像中的一些数据。我不想将其标记为家庭作业,因为它不是任何必需作业的一部分......这是我自己想出的来收集结果的东西。我编写了一个程序来逐像素比较两个图像。它对两个目录中的所有 .bmp 文件执行此操作。现在,我的程序将文件名读取到字符串数组中,并且检查了所有文件名的值,因此我知道目录和文件名最初可以正常访问。这是有问题的代码:

    public static void main(String[]args) throws IOException
{
    File actualDir = new File("C:\\Users\\Rowe\\Desktop\\testExpect");
    String actualFiles[] = actualDir.list();
    File expectedDir = new File("C:\\Users\\Rowe\\Desktop\\testExpect2");
    String expectedFiles[] = expectedDir.list();
    int[][] stats = new int[actualFiles.length][6];                             // Holds all info
            //Columns, Rows, Total, redMatches, shouldaBeenRed, badRed
    for(int i = 0; i < actualFiles.length; i++)
    {
        BufferedImage actualImage = null;
        System.out.println(actualFiles[i]);   //THIS PRINTS PROPERLY
        System.out.println(System.getProperty("user.dir"));  //FOR TESTING
        actualImage = ImageIO.read(new File("C:\\Users\\Rowe\\Desktop\\testExpect\\"+actualFiles[i]));   //ERROR HERE

        BufferedImage expectedImage = null;
        expectedImage = ImageIO.read(new File("C:\\Users\\Rowe\\Desktop\\testExpect2\\"+expectedFiles[i]));  //THIS IMAGE WORKS

...rest of code

现在,当我将目录更改为相同时,程序会运行,并检测到所有像素 100% 相似(应该如此,所以我知道程序会执行我想要的操作)。这是错误:

Exception in thread "main" javax.imageio.IIOException: Can't read input file! at javax.imageio.ImageIO.read(Unknown Source) at PixelCompare.main(PixelCompare.java:22)

我尝试过不同的目录,但没有成功。是否与 .bmp 文件有关?是什么导致一组 BMP 读取良好而另一组无法工作?我可以在其他程序中打开所有必需的文件,因此它们没有损坏。所有属性似乎都是相同的。一个目录是在 Gimp 中手工制作的(这些读起来很好),另一个目录是由基于 Java 的程序生成的。这些可以在 Gimp、Paint、Photoshop 等中读取,但它们不会在我的代码中读取。

非常感谢任何帮助,谢谢!

编辑:忘记使用恢复的代码...我搞砸了然后发布了一些错误的版本。进行修改以显示其他功能代码的原始问题。进一步描述问题:如果您将两个目录更改为在 testExpect2 文件夹中查找预期文件 [] 中的文件列表,它将成功运行。另外,System.out.println(actualFiles[i]在错误发生之前打印正确的文件名,因此我知道正确的文件正在被读入字符串数组。


new File("C:\\Users\\Rowe\\workspace\\Senior Research\\testExpect"+expectedFiles[i])

让我们将目录缩短为C:\\yourDir。您的代码将产生类似的路径

C:\\yourDirexpectedFiles1.bmp

不是你想要的:

C:\\yourDir\\expectedFiles1.bmp

您忘记了路径分隔符。

最好使用两个文件参数构造函数File:

File actualImageFile = new File(actualDir, expectedFiles[i]);
actualImage = ImageIO.read(actualImageFile);

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javax ImageIO IIOException 显然没有原因 的相关文章

随机推荐

  • 无法从设备存储中删除文件android

    我正在开发一个笔记应用程序 其中列表视图在将笔记存储在由我的实用程序类控制的内部存储中后显示笔记 我刚刚在上下文菜单中实现了删除选项 删除选项可以很好地删除每个选定的列表视图项目 但是 当我刷新列表活动或添加新注释时 已删除的注释不断重新出
  • 一旦我将项目添加到 XCode 4.0.2,它就会崩溃

    它给出了这个错误 ASSERTION FAILURE in SourceCache IDEXcode3ProjectSupport IDEXcode3ProjectSupport 269 Xcode3Sources XcodeIDE Fra
  • 如何使用 jszip 库压缩文件

    我正在开发一个使用 HTML5 和 jquery 的移动离线应用程序 我想使用 jszip 从本地存储备份文件 下面是我所做的代码片段 if localStorageKeys length gt 0 for var i 0 i lt loc
  • android:覆盖来电屏幕

    我想在来电屏幕上添加一些附加信息 为此 在我的应用程序中 我正在检查 PHONE STATE 并在 RINGING 上 我正在调用一项活动 在此活动中 我设置如下文本视图 它按预期工作 文本将添加到来电屏幕 问题是 如果我在我的应用程序中
  • 使用正则表达式和 re 获取括号之间的文本

    我有一个字符串数组 我想从中提取特定内容 link description button text 我想得到以下输出 link description button text 对于数组中的每个字符串 我执行以下操作 str re finda
  • Create-React-App:从 node_module 目录包含 CSS 的最佳方法是什么

    我正在尝试在我的 create react app 项目中包含一些 CSS CSS 来自第 3 方 NPM 包 因此位于 node modules 目录中 我试过 import node modules packagename css st
  • 尽管超时很长,PHP 仍丢失 mongoDB 游标

    我正在运行一个长 mongoDB 查询 如下所示 foreach xyz gt find gt timeout 24 60 60 1000 gt maxTimeMS 24 60 60 1000 as document 但是 尽管客户端和服务
  • 更改单选按钮旁边的文本字体?

    要更改我使用的 textView 的字体 TextView tv TextView findViewById R id textview Typeface font Typeface createFromAsset getAssets SF
  • #selector' 指的是未暴露给 Objective-C swift 3 的方法

    我正在使用 Xcode 8 和 swift 3 我在 let action 行上出现以下错误 selector 指的是不暴露给Objective C的方法有什么建议吗 override func tableView tableView UI
  • 传递结构体和结构体指针有什么区别,它们不都是指针吗?

    例如 var myStructRef Vertex var myStruct Vertex myStructRef Vertex 2 3 myStruct Vertex 2 3 fmt Println myStructRef fmt Pri
  • 如何使 Tkinter 支持 PNG 透明度?

    我在 Tkinter 中放入了部分透明的 PNG 图像 我得到的就是这个 如何让右边的黑三角变清晰 就像应该的那样 顺便说一句 这是 Windows 7 上的 python 2 6 这是一个示例 PNG 文件 example png 在不同
  • 如何保持多个虚拟树视图节点的检查状态同步?

    我的树有 2 层节点 它是联系人列表风格树 我的问题是 我想检查所有 联系人类别 中的每个联系人 这是我的联系人列表现在的屏幕截图 是的 我有权发布它 如你所见 托德 赫希已在类别中选中测试类别 但不在所有联系人 我想要实现的目标是让联系人
  • Reflection.Emit 抛出 BadImageFormatException

    我试图在运行时生成一个新的类 对象 看完之后如何使用 PropertyBuilder 创建私有属性 https stackoverflow com questions 33674541 how to create a private pro
  • azure 函数的身份验证令牌缓存

    我们使用身份服务器为我们使用的第三方服务颁发令牌 每个令牌的 TTL 为 1 小时 想知道从天蓝色函数使用此令牌时缓存此令牌的最佳实践是什么 我知道该函数应该是无状态的 但在每个函数运行中请求新令牌是没有意义的 谢谢 这里有一些选项 按努力
  • Nodejs Connect/Express 会话如何管理内存

    我一直在阅读一些关于 Connect 和 Express 的源代码 了解如何管理会话 我仍在学习会话的基础知识 但我不明白内存是如何处理的 我知道服务器将会话数据保存在内存中并使用会话 ID 来访问数据 服务器发送保存 id 的 cooki
  • 使用 webpack-dev-server 监听客户端的热更新事件?

    这是一个有点边缘的情况 但了解一下会很有帮助 当使用 webpack dev server 开发扩展以使扩展代码保持最新时 监听 webpackHotUpdate 会很有用 带有内容脚本的 Chrome 扩展通常有两个方面 背景 注入的内容
  • 如何将我的应用程序设置为默认短信应用程序?

    我正在关注本教程 http android developers blogspot com 2013 10 getting your sms apps ready for kitkat html将我的应用程序设置为默认短信应用程序 但由于某
  • 如何隐藏/禁用admob广告视图?

    我通过 view gone 隐藏 admob adview adView setClickable false adView clearFocus adView setEnabled false adView setFilterTouche
  • 带有 enctype = "multipart/form-data" 的表单发布导致参数无法传递

    在 ASP NET MVC 3 Razor 项目中 我尝试上传图片 视图的相关部分 using Html BeginForm new enctype multipart form data
  • Javax ImageIO IIOException 显然没有原因

    大家好 我有一个 Java 问题 对于我的高级研究课程 我已经基本完成 但我只需要分析我生成的图像中的一些数据 我不想将其标记为家庭作业 因为它不是任何必需作业的一部分 这是我自己想出的来收集结果的东西 我编写了一个程序来逐像素比较两个图像