java8 中 ImageIO 读取 tiff 格式的图片失败

Wesley13
• 阅读 331

在java8 及之前版本中,jdk 中的 ImageIO 读取图片内容会失败,解决办法使用 java9 或者使用第三方插件。

插件可以使用 TwelveMonkeys ImageIO,地址:https://github.com/haraldk/TwelveMonkeys

使用方法,在maven中添加依赖

<dependency>
            <groupId>com.twelvemonkeys.imageio</groupId>
            <artifactId>imageio-tiff</artifactId>
            <version>3.4.1</version>
        </dependency>

因为 ImageIO 会自动搜索类路径下继承的接口和子类,因此不需要显示调用。完全无侵入。使用方法和之前的一样,例如,读取tiff的文件

String filename = "D:\\logs\\temp\\test.tif";
        try {
            BufferedImage bufferedImage = ImageIO.read(FileUtil.getInputStream(filename));
            if (bufferedImage == null) {
                System.out.println("image read null");
            } else {
                System.out.println("read success");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
点赞
收藏
评论区
推荐文章
技术小男生 技术小男生
4个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
光头强的博客 光头强的博客
4个月前
Java面向对象试题
1、请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
Wesley13 Wesley13
1年前
Java处理.tif或.tiff图片
前言Java将图片读取到内存用的是ImageIO,默认可以处理的图片格式如下:ImageIO.getWriterFileSuffixes()//此方法返回可以处理的图片格式数组jpgbmpgifpngwbmpjpeg当要处理其他图片格式时,如tif或tiff则要加入第
Wesley13 Wesley13
1年前
Java一种减少图片存储空间的方法(转换成jpg格式)
  主要用到BufferedImage对象,将原始图片保存为jpg格式:publicstaticvoidthumbImage(Stringinput,StringnewFile)throwsException{Imagesrcjavax.imageio.ImageIO.read(newFile(inpu
Stella981 Stella981
1年前
Spring Boot(六):自定义starter
在springboot中,使用最多的就是starter。starter可以理解为一个可拔插式的插件,例如,你想使用jdbc插件,那么可以使用springbootstarterjdbc。随着版本的推移Starter家族成员也与日俱增。在传统Maven项目中通常将一些层、组件拆分为模块来管理,以便相互依赖复用,在SpringBoot项目中我们则可以创建自
Stella981 Stella981
1年前
ElasticSearch6学习(1)
安装准备:安装Elasticsearch唯一的要求是安装Java8,包括对应的Jdk。其他java9/java10没尝试,考虑兼容问题。我这里只用了java8安装java8可以参考我之前写的一篇文章:https://www.cnblogs.com/phpper/p/9201562.html(https://www.oschina.net/
Wesley13 Wesley13
1年前
Java8新特性学习
1简述公司自年初终于开始使用java8作为项目的标准jdk,在开发过程中,逐渐认识到java8的很多新特性,确实很方便.其中内容的核心,在于函数式编程,即将函数本身作为对象参数去处理.其中涉及到三个关键新特性:1.lambda表达式(及函数式接口)2.stream3.方法引用这三个新特性的使用是相辅相
Easter79 Easter79
1年前
SpringBoot依赖外置
背景近期有个SpringBoot的项目需要频繁更新,但是每次上传到服务器上几十MB,实在是花时间,所以打算优化打包方案,将第三方依赖外置流程首先使用SpringBoot打包插件将第三方排除,但是一些版本号同步更新的本地模块依赖需要放到一个jar中使用mavendependency插件将第三方依赖复制到构建目录中
Stella981 Stella981
1年前
RestHighLevelClient操作Elasticsearch 7.10
很多时候需要利用javaapi读取Elasticsearch.目前官方首推的是RestHighLevelClient.所以可以尝试使用这个客户端进行简单的语句生成和操作.首先在Maven的pom中添加dependency<dependency<groupIdorg.elasticsearch.client</grou
Stella981 Stella981
1年前
SpringBoot依赖外置
背景近期有个SpringBoot的项目需要频繁更新,但是每次上传到服务器上几十MB,实在是花时间,所以打算优化打包方案,将第三方依赖外置流程首先使用SpringBoot打包插件将第三方排除,但是一些版本号同步更新的本地模块依赖需要放到一个jar中使用mavendependency插件将第三方依赖复制到构建目录中