AdminPi, 后端, 2021-03-31 18:15:00
随着移动终端的功能越来越强大,能胜任的事务越来越多,大部分人不是逼不得已,似乎已经很少打开电脑了。
有不少app和网站,为了方便,都可以直接调用摄像头,拍照上传图片。
手机的使用习惯,千奇百怪,一千个人就有一千种使用方法!拍照,有人喜欢横屏拍,显的脸小;有人喜欢竖屏拍,显得腿长。这也就导致了一个问题,手机拍照上传的照片,究竟应该如何显示?直接显示?还是旋转90度?
让用户自由选择角度?一来违背用户体验的原则,二来大部分用户根本懒得去搭理你这个选项!
还好,你担心的问题,前辈们早已准备了解决方案,那就是图像的元数据信息:EXIF!
通过图像的元数据信息,我们不仅可以判断出图像的方向,包括相机型号、光圈和快门等信息都可以读取到!
试想一下,假如我们的产品不仅可以判断出正确的图像角度,还可以标注一下设备型号等小尾巴信息,等着老板给加鸡腿就好了!
1.使用PHP获取图像的元数据信息:
用到的函数:exif_read_data;
<?php
$exif = exif_read_data('image.jpg');
echo '旋转:',$exif['THUMBNAIL']['Orientation'],'<br />';
echo '品牌:',$exif['Make'],'<br />';
echo '型号:',$exif['Model'],'<br />';
?>
旋转的图片元数据一般获取到的是数值:1代表0度,3代表180度,6代表顺时针90度,8代表逆时针90度。
如果获取到的是空值,可能是相机拍的正常照片;或者是软件设计的非照片图片,正常显示即可。
根据获取到的值,再用php或者js将图片按需进行旋转,即可正常显示。
2.使用js获取图像的元数据信息:
使用Exif.js,下载地址:http://code.ciaoca.com/javascript/exif-js/
具体API接口,可以参考文档,不在赘述。
使用js的话,需要注意不同浏览器的兼容性,没有特别的情况,建议使用php。
© 2024