Java tif多页文件转jpg问题,Decoding of old style JPEG-in-TIFF data is not supported问题
一、Tiff文件转换为单张图片
RenderedOp src2 = JAI.create("fileload", “./file.tif”);//读取tiff文件OutputStream os2 = new FileOutputStream(path+"/test/fk.jpg"); //文件存储输出流JPEGEncodeParam param = new JPEGEncodeParam();ImageEncoder enc2 = ImageCodec.createImageEncoder("JPEG", os2, param); //指定输出格式enc2.encode(src2 );//解析输出流进行输出os2.close();
import java.awt.image.RenderedImage;
import java.awt.image.renderable.ParameterBlock;
import java.io.File;
import java.io.IOException;import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;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.JPEGEncodeParam;
import com.sun.media.jai.codec.TIFFDecodeParam;
import com.sun.media.jai.codec.TIFFEncodeParam;public class TestTiffToJPEG {public static void main(String[] args){tiffToJPEG("F:\\Workspace\\exoa\\oadoc\\test\\tiffile\\testfile.tif");}public static void tiffToJPEG(String tiff){FileSeekableStream ss = null;try {ss = new FileSeekableStream(tiff);//以流形式取出tif文件数据} catch (IOException e) {System.out.println("Exception in " + tiff + " " + e.getMessage());e.printStackTrace();}String path,tiffName;path = tiff.substring(0, tiff.lastIndexOf("."));tiffName = tiff.substring(tiff.lastIndexOf("\\"),tiff.lastIndexOf("."));TIFFDecodeParam param0 = null;TIFFEncodeParam param = new TIFFEncodeParam();JPEGEncodeParam param1 = new JPEGEncodeParam();if(ss!=null){ImageDecoder dec = ImageCodec.createImageDecoder("tiff", ss, param0);//将tif文件流转为image图片int count = 0;try {count = dec.getNumPages();//tif文件页数} catch (IOException e) {System.out.println("Exception in dec.getNumPages() " + e.getMessage());e.printStackTrace();}param.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4);param.setLittleEndian(false); // IntelSystem.out.println("This TIF has " + count + " image(s)");for (int i = 0; i < count; i++) {//存储为jpeg图片RenderedImage page = null;File f = new File(path,"\\"+tiffName+"_" + i + ".jpg");try {page = dec.decodeAsRenderedImage(i);//取出第i张image图片if(!f.exists()){f.getParentFile().mkdirs();f.createNewFile();}} catch (IOException e) {System.out.println("Exception in File f or dec.decodeAsRenderedImage(i)" + e.getMessage());e.printStackTrace();}if(f.exists() && page != null){//压缩图片并保存为JPEG格式ParameterBlock pb = new ParameterBlock();pb.addSource(page);pb.add(f.toString());pb.add("JPEG");pb.add(param1);RenderedOp r = JAI.create("filestore",pb);r.dispose();}}}}
}
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;public class TiffToJPEGByImageIO {public static void main(String[] args){tiffToJPEGByImageIO("F:\\Workspace\\exoa\\oadoc\\test\\tiffile\\1.tif");}private static void tiffToJPEGByImageIO(String tiff) {ImageInputStream input;try {input = ImageIO.createImageInputStream(new File(tiff));//以图片输入流形式读取到tif// Get the readerImageReader reader = ImageIO.getImageReaders(input).next();//获得image阅读器,阅读对象为tif文件转换的流String path,tiffName;path = tiff.substring(0, tiff.lastIndexOf("."));tiffName = tiff.substring(tiff.lastIndexOf("\\"),tiff.lastIndexOf("."));try {reader.setInput(input);// Read page 2 of the TIFF fileint count = reader.getNumImages(true);//tif文件页数//System.out.println(count);for(int i = 0; i < count; i++){BufferedImage image = reader.read(i, null);//取得第i页File f = new File(path,"\\"+tiffName+"_"+i+".jpg");try {if(!f.exists()){f.getParentFile().mkdirs();f.createNewFile();}} catch (IOException e) {e.printStackTrace();}ImageIO.write(image, "JPEG", f);//保存图片}}finally {reader.dispose();input.close();}}catch (IOException e) {e.printStackTrace();}}
}
Java tif多页文件转jpg问题,Decoding of old style JPEG-in-TIFF data is not supported问题相关推荐
- java pdf 多页转换为png格式的图片
java pdf 多页转换为png格式的图片 适用于 无论pdf有多少页均可 废话不说,直接上代码 import java.awt.Graphics; import java.awt.image.B ...
- 关于Java中对于jsp文件的浅认识
jsp文件可以作为java的模板页面?yes! 前端写好的HTML静态文件,后台的Java人员可以改为jsp文件,从而作为模板页面进行嵌套. 在项目中,或多或少的和java工程师有过一定的技术交流,发 ...
- 【java】java中内存映射文件和IO
转载:https://leokongwq.github.io/2017/02/25/java-memorymapped-file-and-io.html 对大多数Java开发人员来说,Java中的内存 ...
- java工具类获取文件扩展名与content-type、http与content-type映射关系
java工具类获取文件扩展名与content-type.http与content-type映射关系 大家好,我是酷酷的韩~ 一.对应关系参考地址: http://doc.chacuo.net/cont ...
- java实现对pdf文件压缩,拆分,修改水印,添加水印
最近要实现一个文件上传,并且在线预览上传文件的功能,设计思路是:把上传的文件通过openoffice转成pdf文件,并将pdf文件以流的形式返回到浏览器,由于上传的部分文件过大,转成pdf后传回前端浏 ...
- java实现给PDF文件添加图片水印,java实现给PDF文件添加文字水印
接上一篇,pdf跟tif 是一起做的 java实现 1.给PDF文件添加图片水印: public static void waterMark1(String inputFile,String outp ...
- Java分页导出Excel文件
Java分页导出Excel文件 1.开发微信小程序接入广告获取收益 技术: Springboot + mongodb + maven +Layui + thymeleaf 上一篇博客已经讲解了Java ...
- 【Java】操作doc文件
读取txt文件 在Java里要对文件进行操作,需要用到IO流. public static void main(String args[]){File f = new File("test. ...
- Java实现给PDF文件加文字水印和图片水印(可以自定义水印格式)
使用Java代码给PDF文件加文字水印 直接上代码运行即可 依赖 有的可能用不上我直接复制全部了 <dependencies><!--word文件转PDF以及水印-->< ...
最新文章
- 汽车行业如何个性化定制转型?看APS系统在这家企业的运用
- mysql索引底层图_MySQL索引底层数据结构
- 华为推出业界首个分布式云原生产品:华为云UCS,持续创新,深耕数字化
- 【9.4】socket模拟http请求
- 基于asp.net sql社区物业管理系统毕业设计网站
- Python Parse JSON –转储,加载
- 计算机高级技师论文网,高级技师论文(数控铣床、加工中心).doc
- layui的tree如何实现动态加载_layui tree动态加载 利用CAReplicatorLayer实现的加载动画 - 电脑常识 - 服务器之家...
- 如何吧家庭网络从计算机去掉,3个简单电脑、路由器设置,迅速解决网络瓶颈提高家庭网络速度...
- Pouch Container与Kubernetes相比效率如何?
- jsp后台页面登录html代码,炫酷的登录jsp页面完整代码
- python 比对两个excel表数据_python 如何快速找出两个电子表中数据的差异
- java实验计算机与光盘,JAVA实验指导资料.docx
- eda技术试卷_EDA技术试题库-试题库
- mysql 日文乱码_Mysql 导入日文数据乱码问题
- python之excel编程
- 不管她是否调皮、不管她成绩是否优秀、也不管她是否迷恋游戏,只想她能睁开眼睛。
- java合并单元格边框不完整,java poi 合并单元格后边框问题
- 透过脉脉的新闻“线”场看职场
- 情人节程序员用HTML网页表白【情人相册模板】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript