code学习

java关于验证图片格式,转换图片格式操作

最近项目中遇到要求图片格式相对准确,部分功能需要指定图片格式。前人造轮,后人乘凉。

这里记录一下,方便以后查阅。

1、验证图片格式。

之前做的验证比较简单,只是验证图片文件后缀。但是与pc端对接的时候,他们会验证图片头信息与后缀,不一致会导致图片打不开。(通过文件头判断图片格式算是比较准确的,当然不排除恶意修改文件头,,,此处找不到表情包很苦恼)

废话不多说直接贴代码:

获取文件的byte数组,在获取文件十六进制头信息。

java关于验证图片格式,转换图片格式操作

我这里验证的是 jpg格式,对应的文件头为 ff d8 ff e0。这个可以在网上搜到。

2、转换图片格式。

这里用到的是 javax.imageio.ImageIO 包的  ImageIO 类。ImageIO.read()。(该方法支持

 File/InputStream/URL/ImageInputStream。)读取文件。

然后使用 ImageIO.write() 转换文件格式。(方法参数1: RenderedImage类型,调用read方法的返回。参数2:String类型,指定转换后的图片格式。方法参数3: 文件输出,支持类型:File/ImageOutputStream/OutputStream)

下面代码以url为例。

java关于验证图片格式,转换图片格式操作

返回byte为转换格式后的文件流。