问题:
用户反馈上传后的图片方向不对,起初怀疑是本身图片方向有问题,但是用windows图片查看器打开图片方向是"正常"显示的?
分析:
windows默认的图片查看器已经帮我们自动旋转展示了,我们在手机横拍或者扫描仪、数码相机输出的图片通常包含此类信息,但是我们java读取的是图片的真实方向,所以在生成图片方向自然也就不对了。
收集数据:
使用红米K50手机、红米note10手机、佳能700D数据码相机、荣耀V10手机,各自拍了一张横屏和竖屏的照片,通过蓝牙的方式传输到电脑端
然后使用 java的第三方库 解析图片的exif信息,
<!-- https://mvnrepository.com/artifact/com.drewnoakes/metadata-extractor -->
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.18.0</version>
</dependency>
在图片的图片的exif信息中,过滤出方向有关的Orientation 信息,结果如下:
总结如下:
1、佳能700D数码相机,在拍摄横屏、竖屏图片是,非常详细的记录方向信息
2、红米K50手机只能记录横屏图片的方向信息...
3、红米note10手机能记录横屏图片的方向信息,竖屏的方向信息与与横屏的一样?
4、荣耀V10手机则完全无法记录横屏、竖屏的方向信息......
未完待续........
源码地址如下:
https://gitee.com/lizhou828/liz-incubator/tree/master/image/image-upload
参考文档:
Java 图片上传后发生了90度的旋转 https://blog.csdn.net/yuyu1067/article/details/116333935
图片Exif 信息中Orientation的理解和对此的处理 https://www.cnblogs.com/csonezp/p/5564809.html
前端 exif.js - Orientation 自动修正解决方案 https://blog.csdn.net/weixin_35933239/article/details/114827603
Windows 10进行旋转的图片,在Windows XP或Windows 7上无法识别
https://blog.csdn.net/weixin_42375011/article/details/115634704