Java Image功能一直都在增强,但是向磁盘写一个图像文件或者返回一个PNG或JPEG依然比较难实现。但是我们可以使用Java Advanced Imaging(JAI)API来解决这个问题。JAI可以从SUN的Java站点下载,它包含在JDK 1.4的javax.imageio包中。要安装JAI,你需要三个jar文件,mlibwrapper_jai.jar, jai_codec.jar, and jai_core.jar放到你的classpath中。推荐将他们放到你的JDK的jre/lib/ext目录下。
对于Java来说,JAI是一个奇怪的系统,不像其他的方面有很多方法需要了解,这里只有一个叫做JAI的高级类和一些辅助方法。这些方法的第一个参数是一个操作类型名字,所以我们将会看到这样的代码:
source = JAI.create("fileload", .. );
JAI.create("extrema", src, ...);
JAI.create("histogram", src, ...);
在这个系统中,你可以很容易的添加你自己的或者第三方的功能,对类型的要求比较松,所以利用它进行开发难度比较大。
将一个AWT图像转化成一个PNG文件需要下面的一小段代码:
import java.awt.Image;
import java.awt.image.renderable.ParameterBlock;
import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
.....
Image img = ....
OutputStream out =....
ParameterBlock pb = new ParameterBlock().add(img);
PlanarImage src = (PlanarImage) JAI.create("awtImage", pb);
JAI.create("encode", src, out, "PNG", null);
从上面的例子可以看出向create方法传递参数有两种方法。新方法是使用ParameterBlock包含所有的参数。我们使用这种方法实现了awtImage操作。老方法是则使用一个重载方法,现在已不提倡使用,但是我们可以使用这种方法实现解码操作。上面的代码将把一个Image编码成为一个PNG并将其写入OutputStream中。
实例Java jai 读取tif文件页数:
-
import
java.io.File;
-
import
java.io.IOException;
-
-
import
com.sun.media.jai.codec.FileSeekableStream;
-
import
com.sun.media.jai.codec.ImageCodec;
-
import
com.sun.media.jai.codec.ImageDecoder;
-
import
com.sun.media.jai.codec.SeekableStream;
-
import
com.sun.media.jai.codec.TIFFDecodeParam;
-
import
com.sun.media.jai.codec.TIFFDirectory;
-
-
public
class
TifTest {
-
public
static
void
readTifFIle(String fileName) {
-
File file =
new
File(fileName);
-
SeekableStream s =
null
;
-
TIFFDecodeParam param =
null
;
-
try
{
-
s =
new
FileSeekableStream(file);
-
ImageDecoder dec = ImageCodec.createImageDecoder(
"tiff"
, s, param);
-
int
numofpages;
-
numofpages = dec.getNumPages();
-
System.out.print(numofpages);
-
}
catch
(IOException e1) {
-
e1.printStackTrace();
-
}
-
}
-
-
public
static
void
readTifFIle2(String fileName){
-
File file =
new
File(fileName);
-
SeekableStream s =
null
;
-
try
{
-
s =
new
FileSeekableStream(file);
-
System.out.println(TIFFDirectory.getNumDirectories(s));
-
}
catch
(IOException e) {
-
e.printStackTrace();
-
}
-
}
-
-
public
static
void
main(String[] args) {
-
String fileName =
"C:\\证明.tif"
;
-
readTifFIle2(fileName);
-
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
}
Java Image功能一直都在增强,但是向磁盘写一个图像文件或者返回一个PNG或JPEG依然比较难实现。但是我们可以使用Java Advanced Imaging(JAI)API来解决这个问题。JAI可以从SUN的Java站点下载,它包含在JDK 1.4的javax.imageio包中。要安装JAI,你需要三个jar文件,mlibwrapper_jai.jar, jai_codec.jar, a
首先下载
java
处理
图片
的
JAI
包 (见附件)
或者到http://download.csdn.net/detail/guoxuepeng123/5258630(下载
JAI
包)
下面是转换的代码:
1 package cn.xsbiz.servlet.test;
3 import
java
.io.FileOutputStream;
4 ...
解决找不到类
java
x.
media
.
jai
.Planar
Image
的错误
解决报错com.sun.
media
.
jai
.codec.SeekableStream的错误
包含文件为:
jai
-core.jar 和 sun-
jai
_codec.jar
这个是我报的错 因为修复掉了 没得截图.......
通过https://blog.csdn.net/zhujq_icode/article/details/80743394这篇文章 执行完之后 把本地的jar包加载到本地仓库后!! 我以为就没问题了(天真)
后来再启动项目就给我报程序包不存在错误 (我想我已经加载到本地了,怎么还会报这错)
后来也翻了很多文章 始终没有解决
这时我想会不会是依赖下载不全 ..
jai
-core-1.1.3.jar was cached in the local repository 问题解决(maven)
Failure to find
java
x.
media
:
jai
-core:jar:1.1.3 in
https://repo.maven.apache.org/maven2 was cached in the local repository,
reso...
随时添加
功能
和性能升级。
我不是一个很好的程序员。 我犯了错误,编写了不理想的代码,做出了错误的设计决策。 作为科学家,我是这些数学库的最终用户。 我的目标是使该库易于
使用
和易于理解。
由于
Jai
的水平很低,因此乌托邦将用
Jai
编写所有的数学运算。
但是,诸如BLAS,LAPACK等库已经投入了数十年的工作。因此,与从头开始编写所有内容相比,这些库的包装也许更容易,更稳定,更可靠。
我将从编写朴素的
Jai
实现开始,然后逐步进行改进。
让我们保持尽可能简单:
有意义的运算符重载(线性代数,复数,四元数等),否则调用简单函数。
如果不是非常必要,则不需要特殊的类型别名
import
java
x.
media
.
jai
.
JAI
;
import
java
x.
media
.
jai
.RenderedOp;
jai
_core-1.1.3.jar
jai
_codec-1.1.3.jar
jai
-
image
io-core(独立)
注意:这是原始
java
.net项目
jai
-
image
io-core(在上游不再可用)的社区分支。
该项目为
Java
的添加了对以下文件类型的读/写支持:
gif(写)
请注意, 现在大多数这些格式。
该项目的类通常不直接
使用
,而是通过
Image
IO的SPI插件机制
使用
。 有关详细信息,请参见。
该项目提供的实现
使用
包名称com.github.
jai
image
io ,请注意,其他实现可能由
Java
安装或其他依赖项提供。
与原始的
jai
-
image
io-core不同,该项目被称为“独立”,它删除了对
jai
-core软件包(
java
x.
media
.
jai
)和JPEG 2000( jj2000 )的jj2000 。 该版本也不包括libJIIO的C实现,这意味着该版本是平台独立的,并且根据的3条
Maven 安装 JAR 包的命令是:
mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar
我下载的这个 jar 包是放到了 D:\mvn 目录下(D:\mvn\spring-co
最近我在
使用
java
完成pdf转
图片
时需要用到一个依赖是
但是导入时缺报错了!说Cannot resolve
java
x.
media
:
jai
_core:1.1.3
这里我也找到了解决方案,在这里教大家一下,问题也就是说没有找到这个依赖需要的依赖包
java
x.
media
:
jai
_core:1.1.3。我们先打开自己的maven仓库看看这个依赖包有没有。
这个时候我就在网上下载了这个jar包,把他放进去
这个时候刷新maven他就能找到了!问题完美解决!
因为很多小伙伴不知道这个jar包在哪下载,这
Java
Advanced Imaging(
JAI
)是
Java
平台上的一个高级图像处理库,提供了许多高级的图像处理
功能
和算法,如图像缩放、旋转、滤波等。下面是
使用
JAI
的基本步骤:
1. 安装
JAI
库:
JAI
库可以从Oracle官网下载并安装。
2. 导入
JAI
库:在
Java
项目中,需要导入
JAI
库的jar文件,以便在代码中
使用
JAI
的类和方法。
3. 加载图像:
使用
JAI
的ImagIO类中的静态方法read()方法,从文件或URL中读取图像数据,并将其转换为
JAI
的Planar
Image
对象。
4. 执行图像处理:通过
JAI
提供的各种方法和算法,对Planar
Image
对象进行图像处理,如缩放、旋转、滤波等。
5. 导出图像:
使用
JAI
的ImagIO类中的静态方法write()方法,将处理后的Planar
Image
对象保存为文件或输出流。
以下是示例代码:
import
java
x.
media
.
jai
.*;
import
java
.awt.
image
.Buffered
Image
;
import
java
.io.File;
import
java
.io.IOException;
public class
JAI
Test {
public static void main(String[] args) throws IOException {
//加载图像
Planar
Image
image
=
JAI
.create("fileload", "test.jpg");
//执行图像处理
ParameterBlock pb = new ParameterBlock();
pb.addSource(
image
);
pb.add(Float.valueOf(0.5f)); //缩放比例为0.5
pb.add(Float.valueOf(0.5f));
pb.add(Float.valueOf(0.0f));
pb.add(Float.valueOf(0.0f));
pb.add(Interpolation.getInstance(Interpolation.INTERP_BILINEAR)); //采用双线性插值算法
Planar
Image
scaled
Image
=
JAI
.create("scale", pb, null);
//导出图像
Buffered
Image
output
Image
= scaled
Image
.getAsBuffered
Image
();
Image
IO.write(output
Image
, "JPEG", new File("output.jpg"));
这段代码将读取名为“test.jpg”的图像文件,将其缩小到原来的一半,采用双线性插值算法进行缩放,并将处理后的图像保存为名为“output.jpg”的文件。
希望这个示例能够帮助你了解如何
使用
JAI
进行图像处理。