关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

java上传图片获取文件信息 校验文件尺寸

发布时间:2023-06-30 23:28:39

 一开始我是用的是下面这种方法,测试了几个图片都没有问题,然后随便去网上下载了个图片测试,竟然报了空指针,获取不到高度和宽度,于是我右键查看图片属性,详细信息竟然都是空的

这是一个jpg格式的图片,然后我用WPS看图打开他,WPS看图显示此图片的详细信息都有尺寸,还有图片类型是webp类型。

InputStream murl = new URL(user1.getFileurl()).openStream(); BufferedImage sourceImg =ImageIO.read(murl); System.out.println(sourceImg.getWidth()); // 源图宽度 System.out.println(sourceImg.getHeight()); // 源图高度 if(Math.abs(sourceImg.getWidth()-sourceImg.getHeight())>30 || sourceImg.getWidth()>800 || sourceImg.getHeight()>800) {  return ResponseBaseData.responseJsonToString(307, 14, "error", 1114445, null); }

   

既然这种方法不好用,那就找第三方jar包。

依赖:

 com.drewnoakes metadata-extractor 2.11.0

   

代码实现:

Metadata metadata = ImageMetadataReader.readMetadata(new File(图片路径)); int width = 0; int height = 0; for (Directory directory : metadata.getDirectories()) {  for (Tag tag : directory.getTags()) {  //格式化输出[directory.getName()] - tag.getTagName() = tag.getDescription()  //System.out.format("[%s] - %s = %s\n",  //directory.getName(), tag.getTagName(), tag.getDescription());  if(tag.getTagName().equals("Image Width")) {  width = Integer.parseInt(tag.getDescription());  }  if(tag.getTagName().equals("Image Height")) {  height = Integer.parseInt(tag.getDescription());  }  }  }

   

格式化输出的结果:


/template/Home/leiyu/PC/Static