JAI ClassNotFound调用JAI.create时的异常

dmo*_*s18 2 java image-processing jai java-ee

我正在尝试使用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);
}
Run Code Online (Sandbox Code Playgroud)

"file"(Java.io.File)和"fileName"(String)参数都可以.但是当它到达"JAI.create(...)"行时,我得到了这个异常:

java.lang.ClassNotFoundException: javax.media.jai.JAI
Run Code Online (Sandbox Code Playgroud)

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

dav*_*XYZ 6

JAI不附带JDK.你分开得到它.在这里找到合适的JAR库.然后将其添加到您的路径中.

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

在Ubuntu上,您也可以通过它安装它

sudo apt-get install libjai-core-java
Run Code Online (Sandbox Code Playgroud)

加载图像可以像这样完成:

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

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