gpt4 book ai didi

java - 在 Java 中读取 16 位位图

转载 作者:行者123 更新时间:2023-11-30 11:15:53 26 4
gpt4 key购买 nike

我需要在 eclipse 中用 java 读取 16 位位图 (R5 G6 B5)。我用 ImageIO.read() 尝试过,但出现错误:javax.imageio.IIOException:无法读取输入文件!在 javax.imageio.ImageIO.read(ImageIO.java:1301)

相同的代码可以毫无问题地处理 24 位位图。

File file = new File("D:/MainScreen16BitR5G6B5.bmp");
imgBuf = ImageIO.read(file);

在这种情况下,除了 ImageIO.read() 之外还有其他方法吗?或者一些特殊的图书馆?我搜索了解决方案,但没有找到。仅适用于 tiff 或如何转换为 16 位。

欢迎所有提示!谢谢你帮助我。

最佳答案

这不太可能与位图的格式有关。您的错误消息有两个提示:

  1. 异常文本是“无法读取输入文件!”。
  2. 异常来源是ImageIO.java第1301行。

假设您使用的是 Java 7,如果我们看一下 ImageIO source ,我们可以看到ImageIO.read()中的相关代码,符合你的描述是:

public static BufferedImage read(File input) throws IOException {
...
if (!input.canRead()) {
throw new IIOException("Can't read input file!"); // <- line 1301
}
...
}

请注意,input 是一个 File,这意味着 File#canRead() 正在返回 false你的形象。查看 File#canRead() 的文档,我们看到它:

Returns: true if and only if the file specified by this abstract pathname exists and can be read by the application; false otherwise.

长话短说:

因此我们可以得出结论,真正的问题是文件不存在,或者您没有读取它的权限,而不是文件格式。

因此请检查以确保您的路径名正确并且该文件确实存在,并且您的应用程序具有读取它的权限。当您遇到此类错误时,这应该始终是您检查的第一件事。

关于java - 在 Java 中读取 16 位位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25133814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com