2

我在我的应用程序中使用了 jai(Java Advance Imaging)。

当我使用 jai 设置时,我觉得我的图像处理速度更快,但它需要将这些设置安装在用户计算机中。

而且当我使用 jai 的罐子时,它不需要任何安装,但图像处理有点慢。

那么我应该使用什么方法来获得更快和更有效的结果?

有什么方法可以静默安装 jai 设置,在灌输时不需要任何用户交互?

4

1 回答 1

2

我认为您看到的性能差异是由 JAI 在有或没有硬件加速的情况下运行引起的。要获得硬件加速,您必须:

  • 或将 JAI 安装到 JRE(然后将正确的 JAR/DLL/SO 文件复制到 JRE,然后可供任何 Java 应用程序使用)
  • 或为您的 java 应用程序提供 JAR/DLL/SO 文件。在这种情况下不需要安装!

要实施第二个选项,您必须:

  • 包含 jai_codec-1.1.3.jar jai_core-1.1.3.jar mlibwrapper_jai.jar 到您的应用程序并将它们添加到类路径中
  • 放入 libmlib_jai.so mlib_jai.dll mlib_jai_mmx.dll mlib_jai_util.dll 应用程序的工作文件夹

如果您在 Lynux 上运行,您可能需要LD_LIBRARY_PATH使用工作目录进行扩展,以告诉 java 在哪里可以找到 SO 文件:

#!/bin/bash

ROOT=`dirname $0`
cd $ROOT

# allow JINI to load libraries from working directory 
# (e.g. libmlib_jai.so - JAI hardware acceleration library) 
export LD_LIBRARY_PATH=$ROOT:$LD_LIBRARY_PATH

例子:

您的应用程序结构可能是:

YourApplication
    lib
        jai_codec-1.1.3.jar 
        jai_core-1.1.3.jar 
        mlibwrapper_jai.jar        
        ...
    libmlib_jai.so 
    mlib_jai.dll 
    mlib_jai_mmx.dll 
    mlib_jai_util.dll
    ...
    run.cmd
    run.sh
    ...

因此,JAR 包含在 CLASSPATH 中,而 SO/DLL 位于工作文件夹中(run.cmd/.sh执行的位置)。

于 2012-08-29T11:49:17.433 回答