Atitit java读取tif文件为空null的解决 图像处理
Jdk8.。
public static byte[][] toByteArr(String filename) {
if(!new File(filename).exists())
throw new RuntimeException("file not exist:"+filename);
System.out.println(filename);
BufferedImage bimg = null;
try {
bimg = ImageIO.read(new File(filename));
} catch (IOException e) {
ExUtil.throwExV2(e);
}
页不跑出异常
找到问题了,原来图片虽然扩展名是JPG,但是实际格式是TIF,ImageIO不支持TIF。
这里顺便贴出来ImageIO可以读写的图片格式。
用:
Java code?
1 2 |
String[] rf = ImageIO.getReaderFormatNames(); String[] wf = ImageIO.getWriterFormatNames(); |
rf:jpg,rf:BMP,rf:bmp,rf:JPG,rf:jpeg,rf:wbmp,rf:png,rf:JPEG,rf:PNG,rf:WBMP,rf:GIF,rf:gif
wf:BMP,wf:bmp,wf:jpg,wf:JPG,wf:wbmp,wf:jpeg,wf:png,wf:PNG,wf:JPEG,wf:WBMP,wf:GIF,wf:gif
ImageIO应该不会因为图片太大返回NULL,就算图片太大只会抛出内存溢出的错误。
OK,结贴了。
package aa;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;
import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageEncoder;
import com.sun.media.jai.codec.JPEGEncodeParam;
public class TifTest {
public String ConvertTif(String tiffile) { // 生成不重复的文件名
String jpgname = tiffile.replace(".tif", ".jpg");
String alternateName = jpgname;
int i = 0;
while (file_exists(alternateName)) {
alternateName = i + jpgname;
i++;
}
// now alternateName would be final file name to be saved. and we should
// return that
try {
RenderedOp src = JAI.create("fileload", tiffile);
OutputStream os = new FileOutputStream(alternateName);
JPEGEncodeParam param2 = new JPEGEncodeParam();
ImageEncoder enc2 = ImageCodec.createImageEncoder("JPEG", os, param2);
enc2.encode(src);
os.close();
} catch (Exception e) {
e.printStackTrace();
}
return alternateName;
}
private boolean file_exists(String alternateName) {
// TODO Auto-generated method stub
return new File(alternateName).exists();
}
public static void main(String[] args) throws IOException {
String f="D:\\0workspace\\atiplat_img\\figerprint\\images\\candidate1.tif";
String jpg=new TifTest().ConvertTif(f);
System.out.println(jpg);
BufferedImage bimg = ImageIO.read(new File(f));
System.out.println(bimg);
你
可能需要 jai_imageio jar。。。 也貌似jdk8包括了这个package
}
}
实用Java_将tif转换成jpg并缩放_kathy_新浪博客.html
作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher
捕鸟王"Bird Catcher kok 虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak 万兽之王
简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴
全名::Emir Attilax Akbar bin Mahmud bin attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当 阿尔 拉帕努伊
常用名:艾提拉(艾龙), EMAIL:1466519819@qq.com
头衔:uke总部o2o负责人,全球网格化项目创始人,
uke宗教与文化融合事务部部长, uke宗教改革委员会副主席
Emir Uke部落首席大酋长,
uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,
uke 首席cto 奶牛科技首席cto , 软件部门总监 技术部副总监 研发部门总监主管 产品部副经理 项目部副经理
uke波利尼西亚区大区连锁负责人 汤加王国区域负责人 uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人
Uke软件标准化协会理事长理事长 Uke 数据库与存储标准化协会副会长
uke终身教育学校副校长 Uke医院 与医学院方面的创始人
uec学院校长, uecip图像处理机器视觉专业系主任 uke文档检索专业系主任
Uke 户外运动协会理事长 度假村首席大村长 uke交友协会会长
uke出版社编辑总编
转载请注明来源:attilax的专栏 ?http://blog.csdn.net/attilax
--Atiend v6