为什么使用ImageIO无法从URL获取BufferedImage

2024-02-15

图片网址:

URL url = new URL(imageURL);
BufferedImage image = ImageIO.read(url);

or

URL url = new URL(imageURL);
BufferedImage image = ImageIO.read(url.openStream());

结果image一片空白?为什么?


ImageIO.read(URL)确实支持从 URL 读取图像,就像您所描述的那样,但是,它只支持一组有限的图像格式。内置格式有 JPEG、PNG、GIF、BMP 和 WBMP。还有许多其他格式的插件,例如 TIFF、JPEG 2000 等。

问题是链接的图像不是任何内置格式,而是网页格式 https://developers.google.com/speed/webp/是 Google 创建的一种新图像格式,但尚未广泛使用。它在你的浏览器(和我的:-))中显示良好的原因很可能是你使用的是 Chrome,而 Chrome 内置了对 WEBP 的支持。

至少有一个WEBP ImageIO 插件 https://github.com/lonnyj/webp-imageio可用的。如果您构建并安装此插件,则上面的代码应该可以正常工作并读取图像。应该不需要调用ImageIO.scanForPlugins()当您启动应用程序时,如果插件位于类路径上。

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

为什么使用ImageIO无法从URL获取BufferedImage 的相关文章

随机推荐