Atitit java读取tif文件为空null的解决 图像处理

    xiaoxiao2021-03-26  31

    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

     

    转载请注明原文地址: https://ju.6miu.com/read-661981.html

    最新回复(0)