Java后端以MultipartFile形式接受webp图片,并判断是否为动图

前几天遇到一个问题,前端上传的图片都为webp格式,但有些是动图,有些不是动图
由于它们的后缀都是.webp,无法通过判断后缀来解决,于是通过读取二进制流来判断是否为动图。
如图,经过测试发现,读取动图webp二进制流,前两行会包含一个 ANIM 字符串。否则则为静态,静态图片的二进制流前两行也会包含一个字符串 ALPH
在这里插入图片描述

代码解决:

public Integer uploadPicture(MultipartFile multipartFileImageFile) throws IOException {
    
    
		// 定义动图标记,1表示动图
        Integer animated = 0;
        BufferedReader br;
        String line;
        InputStream is = multipartFileImageFile.getInputStream();
        br = new BufferedReader(new InputStreamReader(is));
        // 二进制流有很多行,我们只需要读取前两行就可以判断
        int count = 0;
        while ((line = br.readLine()) != null) {
    
    
        	// 为保险起见,我们读取5行,如果其中包含"ANIM"则为动图
            if (line.contains("ANIM")) {
    
    
                animated = 1;
            }
            if (count++ >= 5) {
    
    
                break;
            }
        }
  		return animated;      
  }

搞定,小伙伴们如果有更好的办法可以评论。

猜你喜欢

转载自blog.csdn.net/weixin_44123540/article/details/118796972