我的java J2SE应用程序正在从Web上读取大量(png)图像,其中一些使用的功能,例如真实颜色图像的透明度颜色(tRNS部分),Sun的/ Oracle的PNGImageReader实现只是忽略了。
因此,通过ImageIO.read(...);
加载的常见解决方案对我不起作用,因为它依赖于这个不完整的PNGImageReader实现。
有没有人知道可以正确读取所有形式的PNG图像的png阅读器实现 - 具有颜色表或真彩色和alpha透明度或透明颜色的那些?
与GPL项目一样,它应该是一个非商业性项目,可以在应用程序中包含许可问题而无法使用。
编辑:我的这个问题太具体了。因此,让我重新设计我的问题:
谁知道能够加载PNG文件的替代实现和库?
然后,我将测试其实现的功能,以加载一些test png images。
Edit2:最终结果必须是BufferedImage
答案 0 :(得分:3)
最后,我找到了一个合适的PNG阅读器,完全符合我的需求:
主要特点:
答案 1 :(得分:2)
您是否尝试过Apache Commons Imaging库? PNG支持指定为:
通过版本1.2 / ISO / IEC支持 标准(15948:2003)。控制 写作的确切格式是 不完整的。
作为纯Java库,它应该在J2SE上运行良好。
答案 2 :(得分:1)
使用以下方法获取图像:
Toolkit.getDefaultToolkit().getImage(theFilenameOfTheImage)
修改强> 如果需要BufferedImage,可以使用以下命令:
ImageIcon iic=new ImageIcon(theFilenameOfTheImage);
BufferedImage bimg=((ToolkitImage)iic.getImage()).getBufferedImage();
它基本上以相同的方式加载图像,但ImageIcon类使用MediaTracker来确保图像完全加载。这样,您可以访问生成的BufferedImage,它将始终包含像素图。