将tiff文件转化为jpg文件并保存

jar包准备 jai-codec和jai-core

 

主要过程

private boolean parseTifFile(FileItem item) {
  logger.info("-------parseTifFile---start----");
  try {
      InputStream ins = item.getInputStream();
      ImageDecodeParam imageDecodeParam = new TIFFDecodeParam();
      JPEGEncodeParam param1 = new JPEGEncodeParam();
      ImageDecoder imageDecoder = ImageCodec.createImageDecoder("tiff", ins, imageDecodeParam);
      int size = imageDecoder.getNumPages();//tif页数
      String ApplicationPath = SysVar.getVar("ApplicationPath");//ui所在目录/data/app/Claim-YS2/ui/
      String des = SysVar.getVar("TiffAndJPG");//scanningCopy/folder/
      String name = item.getName();//投保意向书-李帅.tif
      name = name.substring(0,name.lastIndexOf(".tif"));//投保意向书-李帅
      // deleteAllFiles(file);//删除image目录以删除原来可能存在的图片
      for(int i = 0; i < size; i++){
        RenderedImage renderedImage = imageDecoder.decodeAsRenderedImage(i);//单个图片
        ParameterBlock arg = new ParameterBlock();
        String despath = ApplicationPath + des + "jpg/" + this.mBatchNo + "/" + i + ".jpg";
        File file = new File(despath);
        if (!file.exists()) {
          file.getParentFile().mkdirs();
          file.createNewFile();//如果不存在,新建空图片
        }
        arg.addSource(renderedImage);
        arg.add(file.toString());
        arg.add("JPEG");
        arg.add(param1);
        RenderedOp r = JAI.create("filestore", arg);
        r.dispose();

        //保存于数据库中,这里属于lis框架的内容
        T_SAVE_FILESchema tSaveFile = new T_SAVE_FILESchema();
        tSaveFile.setBatchNo(this.mBatchNo);
        tSaveFile.setName(name + "_" + i + ".jpg");//xxx_0.jpg
        tSaveFile.setUrl(despath);
        tSaveFile.setFileType("JPEG");
        tSaveFile.setMakeDate(PubFun.getCurrentDate());
        tSaveFile.setMakeTime(PubFun.getCurrentTime());
        this.tMap.put(tSaveFile, "DELETE&INSERT");
      }
    } catch (Exception ex) {
      ex.printStackTrace();
      this.tCErrors.addOneError(ex.getMessage());
      return false;
  }
  logger.info("-------parseTifFile----end----");
  return true;
}

 

循环删除某个文件夹下的所有文件

public static void deleteAllFiles(File file){
  if(file == null || !file.exists())
  return ;
  if(file.isDirectory()){
    File[] files = file.listFiles();
    if(files != null){
      for(File f : files)
      deleteAllFiles(f);
    }
  }
  file.delete();
}

 

posted @   双子家的咸蛋蛋  阅读(1768)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示