适用于64位Windows的JAI和ImageIO

我搜索JAI和ImageIO库64位窗口,但我没有找到任何版本的这些。 6-7年前,Java Bug跟踪系统的最后64位获胜请求。

我想,jai的开发人员不会发布win64的任何版本。 🙁

我的问题是,我们可以从64bit窗口的源代码构建jai和imageio,这可能吗? 怎么样?

非常感谢…

JAI和JAI Image I / O有两个部分,从源语言的角度来看,java和C / C ++。 java部分是免费的(作为免费啤酒),你可以从java.net下载和编译,但这是java源代码,无论架构(x86,x64)。

SUN不发布C / C ++源代码,因此您只能获得Win32和其他平台的编译.dll。 由于几个原因,该源代码未发布,一个是SUN使用来自第三方的源并且有权使用它,而不是(自由地)重新分发它。

我们三年前联系SUN,因为JAI Image I / O JPEG 12bit编解码器中出现了一些错误,他们提供了一些选项。 如果这些错误对我们来说是紧急的,我们可以提供C / C ++程序员来解决它们,如果我们签署NDA(保密协议),SUN会向我们提供codecLib的源代码。 另一种选择是等待SUN解决问题。 我们为分配给臭虫的SUN工程师提供帮助,他在不到一周的时间内就解决了问题。

现在情况似乎有所不同,因为JAI和相关项目(图像I / O)似乎不再活跃,即没有人正在研究它们(新版本,错误修复)。

因此,如果您需要新版本,最终您将遇到很多JAI问题。

您可以使用32位JRE来执行在64位操作系统(如Windows 7 x64)中使用JAI的程序。

遗憾的是,您不能在64位JRE中使用JAI或Image I / O,因为您只能使用纯Java中可用的function并丢失Image I / O中的大多数编解码器。

另一个问题是你真正需要JAI。 JAI可以使用100%纯Java实现(软件版本),速度较慢但解决了x64的问题。 JAI Image I / O还有一些可以通过100%纯Java实现的function,但大多数function,如编解码器,都需要像codedLib这样的原生dll。

试图在Windows 7上使用其本机MediaLib Windows DLL检查32位Java的生产率。它表明仅比64位纯Java代码略慢(5-10%)。

我用相当大的1位黑白图像(大小为9000 x 2500像素)的中值滤波测试了JAI。 使用中值filter7 x 7,使用32位本机Windows库(DLL)处理需要17秒,使用不带DLL的纯64位Java需要15秒。 测试重复3-4次,时间结果非常相似。

32位Java +本机MediaLib的调试输出:

Raster path is "F:\Projects\Fadeev\listv.bmp" Median size value set to 7 Output file will be saved to input directory Data color set to default value java.awt.Color[r=255,g=0,b=0] (RED) Color distance set to default value 20,00 New color set to default value java.awt.Color[r=255,g=0,b=0] (RED) Image ( 9000 x 2461 ) read in 00:00:00.038 Image color quantized at 00:00:01.400 **Image filtered by () at 00:00:17.531** (MediaLib works now and here!!!) Image stored at 00:00:00.356 (storing in PNG!) Total time is 00:00:19.325 

64位纯Java的调试输出:

 Raster path is "F:\Projects\Fadeev\listv.bmp" Median size value set to 7 Output file will be saved to input directory Data color set to default value java.awt.Color[r=255,g=0,b=0] (RED) Color distance set to default value 20,00 New color set to default value java.awt.Color[r=255,g=0,b=0] (RED) Image ( 9000 x 2461 ) read in 00:00:00.038 Image color quantized at 00:00:00.910 Error: Could not load mediaLib accelerator wrapper classes. Continuing in pure Java mode. Occurs in: com.sun.media.jai.mlib.MediaLibAccessor com.sun.media.jai.mlib.MediaLibLoadException **Image filtered by () at 00:00:13.802** Image stored at 00:00:00.414 Total time is 00:00:15.164 

抱歉,在jai / imageio代码库中,它不存在任何win64代码。

http://java.net/projects/jai-core/sources/svn/show/trunk/src/share/mediaLib

http://java.net/projects/jai-imageio-core/sources/svn/show/trunk/src/share/jclib4jai

但它确实存在jai / imageio bug跟踪系统中的问题。

http://java.net/jira/browse/JAI_IMAGEIO_CORE-62

对不起。