今天做一个爬虫,使用正则匹配到<img>标签以后,直接用InputStream流进行下载到内存,然后再使用FileOutputStream保存到硬盘,但是要获取图片文件格式再进行保存。

一开始使用了正则截取,比如<img src="/book/en/v2/images/basic-branching-1.png" />,就直接用字符串截取.png的内容

        String imgSrc = "/book/en/v2/images/basic-branching-1.png";String formatName = imgSrc.split("\\.")[1];

但是后来突然想到如果URL的path里就带有 . 那怎么办(虽然我没见到过)

假设一个图片标签 <img src="/book/en/v2/.hahaha/basic-branching-1.png" />,那这样就不能保证是截取到后缀。

想到PHP和Python都有直接处理图片的库,很方便,Java应该也有这种操作吧。

经过去StackOverflow查找一番,发现确实Java这种操作很麻烦,所以自己实现了一个工具方法。

    public static List<String> getImageFormat(InputStream srcInputStream) throws IOException {List<String> formatNameList = new ArrayList<>();// 获取ImageInputStream 对象ImageInputStream imageInputStream = ImageIO.createImageInputStream(srcInputStream);// 获取ImageReader对象的迭代器Iterator<ImageReader> iterator = ImageIO.getImageReaders(imageInputStream);// 如果能获得ImageReader对象则说明流中含有图片文件while(iterator.hasNext()) {// ImageReader对象的getFormatName()方法可以获得图片格式formatNameList.add(iterator.next().getFormatName());}return formatNameList;}

这样我们就能从连续的图片文件流中获取多个图片文件,实现获取文件真实格式到的后缀。

Java获取图片文件格式(后缀)相关推荐

  1. JAVA获取图片的宽、高和大小

    JAVA获取图片的宽.高.大小 如果是本地磁盘文件 File file = new File("C:\\Users\\root\\Desktop\\test.jpg");Buffe ...

  2. java获取图片的长宽尺寸(毫米)

    java获取图片的长宽尺寸(毫米) 现在有个需求是附上 附件图片,同时要标注图片的一些属性,比较麻烦的要标识图片的长宽尺寸(毫米),网上找了半天都是获取图片的长宽像素,但是想了想 图片的长宽尺寸不应该 ...

  3. java 图片宽高_[Java]获取图片高和宽

    通过javax.imageio.ImageIO类中的read()函数读取的图片,存放在类java.awt.image.BufferedImage类中.调用BufferedImage类中的getWidt ...

  4. java获取图片的大小和尺寸(本地 服务器)

    java获取图片的大小和尺寸,有两种获取的源,一种是读取本地的图片获取大小和尺寸,一种是通过服务器上图片的地址获取图片的尺寸!下面整理出这两种方式的简易代码,希望帮助的大家和自己! 我使用的Juint ...

  5. java 获取图片的宽高

    博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导): 通过java获取图片的宽高 获取本地文件的图片尺寸: import java.awt.image.BufferedIma ...

  6. Java获取图片||图标

    一:java获取图标 图标:大小小,不占大部分内存,用于Swing组件类,按键旁,表格里,加以修饰形容,达到使得界面更美观的效果 public static Icon getIcon(String n ...

  7. Java获取图片的RGB值(数字图像处理)

    Java获取图片的RGB值(数字图像处理) 一:简介 RGB即是代表红.绿.蓝三个通道的颜色.我们知道大多数的颜色都是由这3种颜色所组成,下面我们将演示使用Java获取到图片中的RGB值,并且输出: ...

  8. Java获取图片RGB值

    前言 图片对比获取坐标的方法很多,我选择了比较简单的方法:对比rgb值.要想对比rgb值,就得先获取图片的rgb值.运用的是BufferedImage里的getRGNB方法. 解决方案 首先用.get ...

  9. Java获取图片属性(长,宽,大小,类型。。)/ EXIF

    获取图片属性(长,宽,大小,类型..)/ EXIF 注:在遇到大的图片或者并发操作时,第一种方法可能会造成内存泄漏,cpu飙高等问题,建议使用第二种: 1.通过java自带的流操作: @Testpub ...

  10. java 获取图片的媒体属性,以大疆无人机照片为例

    <!--依赖的工具类--> <dependency><groupId>com.drewnoakes</groupId><artifactId> ...

最新文章

  1. 编程能力差,90%输在了这点上!CTO:这样学编程 ,更容易成为高手
  2. 怎样实现企业管理系统的操作日志功能
  3. 【SeaJS】【3】seajs.data相关的源码阅读
  4. VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
  5. 2021-10-09 求二叉树的高度(递归和迭代版本)
  6. Mybatis sql注入问题
  7. 部署OCS后修改web farm地址
  8. Leaflet文档阅读笔记- Showing video files解析
  9. 微信们正在成为“被模仿者”!中国互联网现状及趋势报告
  10. LeetCode-124.二叉树中的最大路径和
  11. centos Linux 上 怎么命令行安装和卸载QQ
  12. 渲染系列教程(十八)实时全局光照
  13. (含代码)基于51单片机电子密码锁设计
  14. 一个神奇的FLAC转MP3在线工具
  15. 运用Excel实现描述性统计分析
  16. c语言输出99乘法表的思路,C语言输出99乘法表
  17. 中国石油大学《大学语文》第一阶段在线作业
  18. java中lifo的数组_Java 实现下压(LIFO)栈
  19. 关于启动 vue 项目出现 98% after emitting CopyPlugin 的解决方法!
  20. 第二天学习笔记:(MDN HTML学习、web安全策略与常见攻击、语义化)

热门文章

  1. Edge工程师:我在微软300+天,谈谈我眼中的微软
  2. office2003注册序列号CAB文件丢失…
  3. mysql的in能超过1000吗_SQL使用IN参量不能超过1000的表现形式以及解决办法
  4. mysql 查询生日_MySQL,怎么查询一段时间内过生日的员工
  5. 中国电信修改光猫路由模式为桥接模式
  6. 二元二次不定方程(佩尔方程)
  7. Android系统优化
  8. 计算机管理格式化硬盘,细说电脑怎么格式化硬盘
  9. AI改变现代商业的25种方式
  10. 读书笔记 | 财务会计理论(第7版 William R.Scott)(中)