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

Wesley13
• 阅读 514

在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();
        }
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
2年前
java8 时间类与Date类的相互转化
java8时间类与Date类的相互转化在转换中,我们需要注意,因为java8之前Date是包含日期和时间的,而LocalDate只包含日期,LocalTime只包含时间,所以与Date在互转中,势必会丢失日期或者时间,或者会使用起始时间。如果转LocalDateTime,那么就不存在信息误差。//Date与Instant的相互转化
Wesley13 Wesley13
2年前
Java处理.tif或.tiff图片
前言Java将图片读取到内存用的是ImageIO,默认可以处理的图片格式如下:ImageIO.getWriterFileSuffixes()//此方法返回可以处理的图片格式数组jpgbmpgifpngwbmpjpeg当要处理其他图片格式时,如tif或tiff则要加入第
Wesley13 Wesley13
2年前
Java一种减少图片存储空间的方法(转换成jpg格式)
  主要用到BufferedImage对象,将原始图片保存为jpg格式:publicstaticvoidthumbImage(Stringinput,StringnewFile)throwsException{Imagesrcjavax.imageio.ImageIO.read(newFile(inpu
Stella981 Stella981
2年前
NetBeans IDE集成Maven
NetBeans6.7更新版本已经内置对Maven支持。如遇以前的版本,Maven插件在插件管理器中可用。我们正在使用NetBeans在这个例子中使用6.9。在NetBeans一些特点如下您可以从NetBeans运行Maven目标。您可以可以查看Maven命令的输出使用其自己的控制台在NetBeans里面​​。
Stella981 Stella981
2年前
Spring Boot(六):自定义starter
在springboot中,使用最多的就是starter。starter可以理解为一个可拔插式的插件,例如,你想使用jdbc插件,那么可以使用springbootstarterjdbc。随着版本的推移Starter家族成员也与日俱增。在传统Maven项目中通常将一些层、组件拆分为模块来管理,以便相互依赖复用,在SpringBoot项目中我们则可以创建自
Stella981 Stella981
2年前
ElasticSearch6学习(1)
安装准备:安装Elasticsearch唯一的要求是安装Java8,包括对应的Jdk。其他java9/java10没尝试,考虑兼容问题。我这里只用了java8安装java8可以参考我之前写的一篇文章:https://www.cnblogs.com/phpper/p/9201562.html(https://www.oschina.net/
Stella981 Stella981
2年前
Maven命令将本地jar打包到maven仓库
一、背景日常开发中,常见的一种情况是在java项目的pom.xml文件中引入依赖版本信息,由于maven中央仓库没有这个jar,我们可以从其他地方下载下来,然后再使用打包方式将下载下来的jar包打包到maven仓库。二、示例1\.依赖ojabc6引入!在这里插入图片描述(https:/
Wesley13 Wesley13
2年前
Java8新特性学习
1简述公司自年初终于开始使用java8作为项目的标准jdk,在开发过程中,逐渐认识到java8的很多新特性,确实很方便.其中内容的核心,在于函数式编程,即将函数本身作为对象参数去处理.其中涉及到三个关键新特性:1.lambda表达式(及函数式接口)2.stream3.方法引用这三个新特性的使用是相辅相
Stella981 Stella981
2年前
RestHighLevelClient操作Elasticsearch 7.10
很多时候需要利用javaapi读取Elasticsearch.目前官方首推的是RestHighLevelClient.所以可以尝试使用这个客户端进行简单的语句生成和操作.首先在Maven的pom中添加dependency<dependency<groupIdorg.elasticsearch.client</grou
Wesley13 Wesley13
2年前
Java日期时间API系列30
  实际使用中,经常需要使用不同精确度的Date,比如保留到天2020042300:00:00,保留到小时,保留到分钟,保留到秒等,常见的方法是通过格式化到指定精确度(比如:yyyyMMdd),然后再解析为Date。Java8中可以用更多的方法来实现这个需求,下面使用三种方法:使用Format方法、 使用Of方法和使用With方法,性能对比,使用