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