javajai
1. java 实现 tif图片(多页的)转换成jpg
多页单个tif文件转换为多个jpg文件
需要官方的一些包支持(具体参考源码),上网找找即可。
源码:
-------------------------
import java.io.*;
import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.TIFFEncodeParam;
import com.sun.media.jai.codec.TIFFDecodeParam;
import com.sun.media.jai.codec.JPEGEncodeParam;
import java.awt.image.RenderedImage;
import javax.media.jai.RenderedOp;
import javax.media.jai.JAI;
import java.awt.image.renderable.ParameterBlock;
public class MultiPageRead {
public static void main(String[] args) throws IOException {
new MultiPageRead().doitJAI();
}
public void doitJAI() throws IOException {
FileSeekableStream ss = new FileSeekableStream("./zhaoming.tif");
TIFFDecodeParam param0 = null;
TIFFEncodeParam param = new TIFFEncodeParam();
JPEGEncodeParam param1 = new JPEGEncodeParam();
ImageDecoder dec = ImageCodec.createImageDecoder("tiff", ss, param0);
int count = dec.getNumPages();
param.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4);
param.setLittleEndian(false); // Intel
System.out.println("This TIF has " + count + " image(s)");
for (int i = 0; i < count; i++) {
RenderedImage page = dec.decodeAsRenderedImage(i);
File f = new File("./fk_" + i + ".jpg");
System.out.println("Saving " + f.getCanonicalPath());
ParameterBlock pb = new ParameterBlock();
pb.addSource(page);
pb.add(f.toString());
pb.add("JPEG");
pb.add(param1);
//JAI.create("filestore",pb);
RenderedOp r = JAI.create("filestore",pb);
r.dispose();
//RenderedOp op = JAI.create("filestore", page, "./zhaoming_" + i + ".jpg", "JPEG", param1);
}
}
}
2. java读取TIFF图像方法
Asprise offers TIFF writer and reader library as valued add-on to our flagship procts – Asprise OCR & JTwain. Tagged Image File Format (abbreviated TIFF) is a file format for mainly storing raster images. With Asprise Java TIFF library, you can easily create, manipulate (read and write), disassemble TIFF files easily.
你可以去他们家的网站去download这个API,然后就可以比较简单的搞定这个TIFF的读入问题了。
3. 要怎样才能学好java
我以一个老程序员的身份分享一点感悟吧:
JAVA是一种软件开发语言,和学其他任何一种开发语言有一样的道理或者说方法。
学习一门软件开发语言,应该先入门,然后,就可以“自学成才”。
那怎么入门呢?
1,学语言,就是为了写程序。啥基础没有,就得先了解其语法。语法包括其各保留字,数据类型,容器,类,对象模型,多线程,各种功能包。比如《JAVA编程思想》,就可以带你入门。
2,如何创建一个项目,如何编译,如何运行。如何调试。
这些随便一本入门书都会讲。
3,真正要开发一个软件项目了,你还要了解JAVA这种语言以外的知识。
比如,一个简单的客户资料管理软件,WEB版。
产品需求简单定义为,对客户资料的增删改查。
可以先用AXURE画一个界面设计,当然也可以直接在纸上画线框图。目的是画出来最终用户界面。定义出来用户怎么操作这个软件。交互设计定义每一步操作和界面反馈。
还要想好,数据怎么保存,用什么数据库(如MySQL),数据表怎么设计(有哪些资料,对应到表的字段上)
软件后台架构怎么设计?因为项目业务逻辑非常简单,即可以前后端分离,也可以不分离。前端可以用VUE加UI框架,后端可以直接用spring,springMVC,不需要缓存层直接访问数据库MySql。(负杂的项目可能就需要redis缓存层,bbo微服务等)
设计完成就可以动手写接口,前后端分离的设计需要先按原型图(也可以是前面画好的线框图)来分解前后端交互接口。定义好接口协议(请求路径,参数,返回什么数据,什么格式--一般用json格式)
到此差不多可以动手写代码了。(稍大点的项目中,测试工程师一般已经写好测试用例了)
祭出你的顺手IDE(IDEA),创建一个JAVA web项目,开始码代码吧。
总之,要学好一门语言,需要语法基础,会创建项目,会编译调试。其他基本上就是自学成才了。当然,身旁有高手,随时请教更高效。
现在网上很多免费收费教学视频,也可以试试。
资源很多,方法差不多,都是靠勤奋好学和持之以恒。
4. 怎么将JAR和JAI文件安装在JAVA里
可以放的
1、你的手机必须支持用数据线传输数据
2、你的手机必须有对应的驱动,比如FOR XP 的数据传输驱动
3、你的手机必须支持直接操作内存。
4、可以用Motomidman038这个软件将 JAR 文件保存出来并自动生成 JAD 文件到硬盘上
5、再将着两个文件直接存放到手机内存上。
另外,如果你如果能直接在手机内存上用手机的文件浏览功能看到文件的话,执行它它就会自动安装了,安装完成后就直接在JAVA管理文件夹下了。如果有错误提示,则说明你的手机不支持这个 JAR 软件,所以不能使用。
5. java中的bufferedimage或者javacv中的iplimage如何实现图像序列化
图像对象可以编码成指定图像格式文件保存在硬盘上,需要时再对其进行解码读入内存。但是除了这样还有别的办法可以将图像对象保存在硬盘上吗? 熟悉Java I/O 的人也许可以想到采用对象序列化(Object serialization)试一试,很好,但是如果你研究了 BufferedImage 类的结构后就会大失所望(至少当时我是这样)。
BufferedImage 提供一般图像管理。BufferedImage 对象包括另外两个对象:Raster 和 ColorModel。Raster 对象包含另外两个对象:DataBuffer 和 SampleModel。不幸的是,他们都没有实现序列化所必需的 Serializable 接口,所以无法直接对他们进行对象序列化。
我在学习 JAI 的时候发现了 javax.media.jai.remote 包里有一个类 SerializableRenderedImage,这个类实现了RenderedImage, Serializable 接口,可以将 RanderedImage 对象作为构造函数的参数实例化一个可以序列化的图像对象。
查看JDK的文档可以知道无论 Java 2D 中的 BufferedImage 还是 JAI 中的 PlanarImage 都实现了 RenderedImage 接口,也就是说所有实现自 RenderedImage 接口的对象均可作为参数包装出一个 SerializableRenderedImage 类型对象,将其序列化。
6. 如何用JAVA转换图像格式
关于图像转换的方式,实际上操作的是图像的字节流。我的工作中遇到过将bmp文件压缩为jpg以便于网络传输的课题。所以我这里重点介绍bmp转为jpg的一个方法。
实际上,我更喜欢使用以前sun公司内部使用的api提供的转换方法,这里使用到了两个很重要的类:
com.sun.image.codec.jpeg.JPEGCodec
com.sun.image.codec.jpeg.JPEGImageEncoder
需要注意的是,它们所属的一个jar包不存在于编译目录下,但存在于运行目录下,所以我们首先需要在jre文件下找到rt.jar并导入进来以使得编译通过。
我改写了网上的一个转换代码,所得代码如下:
备注:亲自尝试,当从jpg转bmp时会转很久很久时间(看不到尽头),转得的文件可以很大,所以建议不要使用。
7. 哪里能下载jai_codec.jar、jai_core.jar、mlibwrapper_jai.jar这几个jar包,在线等
jai的类在jdk1.5之后基本都已经包含在javax.imageio下面
想要的话,这里可以下载jai_codec.jar
这里有使用说明
http://java.sun.com/procts/java-media/jai/forDevelopers/jai1_0_1guide-unc/JAITOC.fm.html
8. 使用JAI,需要什么jar文件
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件)。
JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR。
JAVA手机电子书的格式一般为JAR和JAD,其中JAD文件是一个说明文件,描述jar文件的信息。部分手机不支持直接读取JAR(这是手机安全策略引起的),这时则需要JAD文件。这样的手机只在少数。JAVA运行在JAVA虚拟机之上,也就是JVM,而很多低端机型也可以支持JAVA,因此就注定了JAVA格式的适用范围相当广泛。
9. Java有哪些好的第三方图形库
Oracle提供的 Java Advanced Imaging (JAI) 库处理2D图像还可以的。
10. 求教java大神讲解一下jdk里面的jar包是做什么用的,是编译之前用到,还是运行的时候用到
jar包实质上就是指的一个java程序在实现某些方法时所需要用到的封装库 打个比方 一个windows程序在执行的时候有时会出现错误 说某某dll文件没找到 然后就不运行了 这个dll其实和jar包很相像 都是别人帮我们写好的一些公共方法和类 我们要实现某一方法时自己写会很累 所以有人帮我们写好 到时你把他写的jar包一导入 再调他的方法就ok了
所以jdk的jar包容易理解了吧 其实就是你在写程序时import进来的东西哦 因为你要在程序中用不是 而你问它们是什么时候用到 准确来说是分两种 一种是你在类里import进来的 一种是你需要动态反射时用名字找到的 所以可以算是编译及运行都有可能用到