用于加载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上运行良好。