手机拍照一上传,图片角度就旋转?

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