在某一天上班时突然接到了一个需求,扫描仪扫描图片合成一个pdf,pdf传到后台需要吧pdf中的图片提取出来,但是提取出来后发现图片格式是kiff格式,这样格式的图片送给ocr识别,ocr不认识这个格式会报错,所以需要转码直接把kiff转成jpg。
不要直接把后缀改成jpg,这样虽然图片可以打开,但是图片的本质还是kiff还是不行。
这时我们需要两个jar包:
https://repository.jboss.org/maven2/com/sun/media/jai-codec/1.1.3/ 下载链接
注意该方法Java8以下可以使用,Java8以上会报错无法使用 ,Java8以下用法请往下看
/**
* 图片文件格式转换 java8以下此方法可用
*/
public static String tiffTurnJpg(String filePath){
RenderedOp file = JAI.create("fileload", filePath);//读取图片文件
OutputStream ops = null;
String filename = filePath.substring(0, filePath.lastIndexOf(".")) + ".jpg";
try {
ops = new FileOutputStream(filename);
//文件存储输出流
JPEGEncodeParam param = new JPEGEncodeParam();
ImageEncoder image = ImageCodec.createImageEncoder("JPEG", ops, param); //指定输出格式
//解析输出流进行输出
image.encode(file);
//关闭流
ops.close();
return filename;
} catch (FileNotFoundException e) {
LOG.error("", e);
return null;
} catch (IOException e) {
LOG.error("", e);
return null;
}
}
Java8的写法:
public static String tiffTurnJpg(String filePath){
RenderedOp file = JAI.create("fileload", filePath);//读取图片文件
OutputStream ops = null;
String filename = filePath.substring(0, filePath.lastIndexOf(".")) + ".jpg";
try {
ops = new FileOutputStream(filename);
//文件存储输出流
ImageIO.write(file, "jpeg", ops);
//关闭流
ops.close();
return filename;
} catch (FileNotFoundException e) {
LOG.error("", e);
return null;
} catch (IOException e) {
LOG.error("", e);
return null;
}
}