适用于64位Windows的JAI和ImageIO

时间:2011-03-05 22:14:33

标签: java javax.imageio jai

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

我认为,jai的开发者不会发布win64的任何版本。 :(

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

非常感谢...

3 个答案:

答案 0 :(得分:27)

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位操作系统中使用JAI的程序,如Windows 7 x64。

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

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

答案 1 :(得分:2)

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

我用相当大的1位黑白图像(大小为9000 x 2500像素)的中值滤波测试了JAI。使用中值过滤器7 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

答案 2 :(得分:0)

很抱歉,但在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错误跟踪系统中的问题。

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

很抱歉。