【问题标题】:JAI ClassNotFound Exception when calling JAI.create调用 JAI.create 时出现 JAI ClassNotFound 异常
【发布时间】:2012-09-24 20:04:54
【问题描述】:

我正在尝试使用 javax.media.jai.JAI 读取 .tif 图像。这是我的代码:

import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;

BufferedImage image = null;
if(extension.toLowerCase().equals("tif")) {
    RenderedOp op = JAI.create(fileName, file);
    image = op.getAsBufferedImage();
} else {
    image = ImageIO.read(file);
}

“文件”(Java.io.File)和“文件名”(字符串)参数很好。但是当它到达“JAI.create(...)”行时,我得到了这个异常:

java.lang.ClassNotFoundException: javax.media.jai.JAI

我不确定它为什么找不到 JAI。有什么想法吗?

【问题讨论】:

    标签: java jakarta-ee image-processing jai


    【解决方案1】:

    JAI 不随 JDK 一起提供。你单独得到它。找到合适的 JAR 库here。然后将其添加到您的路径中。

    注意:如果你使用的是Windows,你可以自己获取jar并指定路径。或者获取将安装相同 jar 的 exe 并将其添加到您的系统类路径中。我宁愿自己设置路径。

    在 Ubuntu 上,您也可以通过

    安装它
    sudo apt-get install libjai-core-java
    

    加载图片可以这样:

    public BufferedImage loadImage(String filePath){
        RenderedOp img = JAI.create("fileload", filePath);
        return img.getAsBufferedImage();
    }
    

    "fileload",作为文字字符串,是使用JAI.create() 从文件加载图像的操作名称。如果fileName 不等于"fileload",这也可能引发异常。

    【讨论】:

    • 有没有办法将renderImage 转换为bufferedImage?我需要它作为另一个进程的缓冲图像
    • 仍然遇到同样的异常。我正在使用 eclipse 并将 jai_core.jar 和 jai_codec.jar 添加到构建路径中,但这不起作用。还有其他建议吗?
    • 使用您的代码更改更新您的代码示例。这将帮助我们了解您的所作所为。
    • @dmoss18 我刚刚更改了我的代码,以便您将其作为 BufferedImage 获取。
    猜你喜欢
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 2015-08-20
    • 1970-01-01
    相关资源
    最近更新 更多