第一次写博客有点紧张,主要是遇到了一个非常有趣的问题,想记录一下。
我会上传一个压缩包里面有8张图片,8张图片的orientation是不一样的,你在win上打开和Android打开,图片的朝向是完全不一样的。
问题描述
Android端拍个照片,然后上传到服务器上进行处理,没想到出了bug,在服务器接受到照片的时候,这个照片突然就改变了位置,本来竖着的,到服务器上突然横过来了,电脑上查看的时候还没有问题,Android系统8.0,服务器linux,电脑win10。
问题根源
问题的根源很明显就出在系统对于照片的处理上,比如说张三就会横着看图片,李四就会竖着看图片,是这个看图片的方法导致了不同系统的不同显示
相关的知识点_图片的信息 Exif
这个东西是专门用来存储数码相机照片的相关信息的,但是手机拍的图片也会有这个东西,这算是一个信息头部,因为图片不可能就是一串简单 字符串拼接而成,一定是有照片的信息和这个照片在一块。 在这个Exif中 有一个orientation(方向),这个orientation有8个值可取,包括上下左右四个方向,以及这四个方向的镜像,这个方向就是我们这个我们问题的关键。
每个系统处理orientation的方法不一样,win和Android这种和用户交互较强的系统会预先处理,比如说有个图片,orientation取值是6,但是win和Android知道,只有orientation为1的时候最方便用户看,所以他会调整图片的方向,调整完之后再展示出来,这时你用PS打开看 orientation的值变成了1,但是传到别的系统又变了(无奈)
解决方案
图片拍完之后,读取exif的orientation的值,根据值进行旋转,旋转到正常之后把orientation设置成1,这样别的系统看到这个图片orientation为1,就知道了这个是1(标准)的了,就不会再对他进行变动了,这样就解决这个bug了,不上具体的代码了,因为代码写的太low了,有思路了就行。
具体的解释可以看这个大佬的博客
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/taoszu/article/details/83051879
版权声明:本文为CSDN博主「少年阿涛」的原创文章,遵循 CC 4.0 BY-SA
版权协议,转载请附上原文出处链接及本声明。
(在此提醒大家注意保护隐私,不要胡乱传照片,一些Android手机拍照的时候会记录拍照时间地点等信息)