ImageIO.read() 读取webp图片报null异常
技术

ImageIO.read() 读取webp图片报null异常

1、有些图片后缀虽然是png的,但是实质上是其他的格式。

样例图片
用记事本可以打开看到他真实的格式
image-1707114130706

2、这种格式ImageIO.read() 读取 图片的时候返回的是null

3、解决办法

只需要增加如下依赖,代码不用动
webp-imageio-core-0.1.0.jar

 <dependency>
            <groupId>com.github.nintha</groupId>
            <artifactId>webp-imageio-core</artifactId>
            <version>0.1.0</version>
</dependency>

4、获取图片的类型

   public static String getImageType(String url)  {
        try {
            URL oracle = new URL(url);
            ImageInputStream image = ImageIO.createImageInputStream(oracle.openStream());
            Iterator<ImageReader> readers = ImageIO.getImageReaders(image);
            return readers.next().getFormatName();
        }catch (Exception e){
            log.error("getImageType url={}",url,e);
        }
        return null;
    }