Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加载PNG图像的可选库_Java_Png_Transparency_Loading - Fatal编程技术网

Java 加载PNG图像的可选库

Java 加载PNG图像的可选库,java,png,transparency,loading,Java,Png,Transparency,Loading,我的java J2SE应用程序正在从web上读取大量(png)图像,其中一些图像使用了诸如真彩图像透明色(tRNS部分)之类的功能,而Sun/Oracle的PNGImageReader实现完全忽略了这些功能 因此,通过ImageIO.read(…)加载的常见解决方案不适用于我,因为它依赖于此不完整的PNGImageReader实现 有谁知道一个png阅读器实现,可以正确读取所有形式的png图像-那些具有颜色表或真彩色和alpha透明度或透明颜色的图像 因为它是一个GPL项目,它应该是一个非商业的

我的java J2SE应用程序正在从web上读取大量(png)图像,其中一些图像使用了诸如真彩图像透明色(tRNS部分)之类的功能,而Sun/Oracle的PNGImageReader实现完全忽略了这些功能

因此,通过
ImageIO.read(…)加载的常见解决方案不适用于我,因为它依赖于此不完整的PNGImageReader实现

有谁知道一个png阅读器实现,可以正确读取所有形式的png图像-那些具有颜色表或真彩色和alpha透明度或透明颜色的图像

因为它是一个GPL项目,它应该是一个非商业的,可以包括在应用程序中没有许可问题

编辑:我的问题太具体了。因此,我的问题是:

谁知道能够加载PNG文件的替代实现和库?

然后,我将测试这些实现的能力,以加载一些


Edit2:最终结果必须是一个缓冲图像

使用以下方法获取图像:

Toolkit.getDefaultToolkit().getImage(theFilenameOfTheImage)
编辑: 如果需要BuffereImage,可以使用以下选项:

ImageIcon iic=new ImageIcon(theFilenameOfTheImage);
BufferedImage bimg=((ToolkitImage)iic.getImage()).getBufferedImage();

它基本上以相同的方式加载图像,但ImageIcon类使用MediaTracker确保图像已完全加载。通过这种方式,您可以访问生成的BuffereImage,它将始终包含pixmap。

您尝试过Apache Commons库吗?PNG支持指定为:

通过版本1.2/ISO/IEC支持 标准(15948:2003)。控制 书写时的精确格式 不完整


作为一个纯Java库,它应该在J2SE上运行良好。

最后我找到了一个非常适合我需要的PNG阅读器:

主要特点:

  • 开源(LGPL)
  • 正确加载PNG,包括alpha 透明度和透明颜色
  • 返回一个BuffereImage
  • 与其他系统没有进一步的依赖关系 图书馆
  • 它的大小非常小(整个库的大小为46KB)

首先,我认为这无法工作,因为它将在内部使用相同的图像读取器。有趣的是,这确实有效-透明度已正确加载,但返回的图像是sun.awt.image.ToolkitImage,但我需要一个java.awt.image.BufferedImage。创建新BuffereImage并在其上绘制ToolkitImage的常用方法由于未知原因(无例外)无法工作。链接已失效。我相信这是正确的当前URL: