php获取图片宽高相反,exif_read_data()解决上传图片旋转、图片反向问题,getimagesize获取图片高度宽度相反的问题...
PHP getimagesize 函数获取的图像宽高反了?
exif_read_data()解决上传图片旋转、图片反向问题,getimagesize获取图片高度宽度相反的问题,手机图片上传之后出现了反向问题,操作系统里的文件属性功能可能已经把图片给修正过了,那这时候就要把图片给旋转回来就需要用到php的exif_read_data方法。
返回结果:
Array
(
[FileName] => phpx7iokl
[FileDateTime] => 1558932683
[FileSize] => 3896832
[FileType] => 2
[MimeType] => image/jpeg
[SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF, GPS, INTEROP
[COMPUTED] => Array
(
[html] => width="4000" height="3000"
[Height] => 3000
[Width] => 4000
[IsColor] => 1
[ByteOrderMotorola] => 1
[ApertureFNumber] => f/1.8
[Thumbnail.FileType] => 2
[Thumbnail.MimeType] => image/jpeg
)
[Model] => MI 6X
[Software] => wayne-user 9 PKQ1.180904.001 V10.3.2.0.PDCCNXM release-keys
[Orientation] => 6
[DateTime] => 2019:05:26 15:30:57
[YCbCrPositioning] => 1
[Exif_IFD_Pointer] => 255
[ResolutionUnit] => 2
[GPS_IFD_Pointer] => 798
[XResolution] => 72/1
[YResolution] => 72/1
[Make] => Xiaomi
[THUMBNAIL] => Array
(
[JPEGInterchangeFormat] => 969
[Orientation] => 6
[JPEGInterchangeFormatLength] => 12256
[Compression] => 6
[ResolutionUnit] => 2
[XResolution] => 72/1
[YResolution] => 72/1
)
[ISOSpeedRatings] => 400
[ExposureProgram] => 0
[FNumber] => 175/100
[ExposureTime] => 1/50
[UndefinedTag:0x9999] => {"sensor_type":"rear","mirror":false}
[SensingMethod] => 2
[SubSecTimeDigitized] => 732806
[SubSecTimeOriginal] => 732806
[SubSecTime] => 732806
[FocalLength] => 4070/1000
[Flash] => 16
[UndefinedTag:0x8889] => HHT
[MeteringMode] => 2
[SceneCaptureType] => 0
[InteroperabilityOffset] => 768
[FocalLengthIn35mmFilm] => 4
[DateTimeDigitized] => 2019:05:26 15:30:57
[ExifImageLength] => 3000
[WhiteBalance] => 0
[DateTimeOriginal] => 2019:05:26 15:30:57
[BrightnessValue] => -97/100
[ExifImageWidth] => 4000
[ExposureMode] => 0
[ApertureValue] => 161/100
[ComponentsConfiguration] =>
[ColorSpace] => 1
[SceneType] =>
[ShutterSpeedValue] => 5643/1000
[ExifVersion] => 0220
[FlashPixVersion] => 0100
[GPSTimeStamp] => Array
(
[0] => 7/1
[1] => 30/1
[2] => 56/1
)
[GPSDateStamp] => 2019:05:26
[InterOperabilityIndex] => R98
[InterOperabilityVersion] => 0100
)
//获取图片的旋转角度
$rotate = 0;
$orientation = 1;
if (function_exists('exif_read_data')) {
try { //这里使用try catch主要是解决iphone手机不支持这个方法
$exif = exif_read_data($tep_name);
} catch (Exception $exp) {
$exif = false;
}
if ($exif && isset($exif['Orientation'])){
$orientation = $exif['Orientation'];
}
} else if (preg_match('@\x12\x01\x03\x00\x01\x00\x00\x00(.)\x00\x00\x00@', file_get_contents($tep_name), $matches)) {
$orientation = ord($matches[1]);
}
//获取角度
switch($orientation) {
case 1:
$rotate = 0;
break;
case 8:
$rotate = -90;
break;
case 3:
$rotate = 0;
break;
case 6:
$rotate = 90;
break;
}
?>
问题解决方案参考:https://www.e-learn.cn/content/wangluowenzhang/717898
参考文档:https://www.cnblogs.com/csonezp/p/5564809.html
php获取图片宽高相反,exif_read_data()解决上传图片旋转、图片反向问题,getimagesize获取图片高度宽度相反的问题...相关推荐
- 移动端图片自适应,img固定宽高,怎么解决不同尺寸图片显示会变形的问题
方案1: 根据图片实际宽高和需要显示的容器宽高等比例拉伸或缩小1.父容器如div设置固定width和height,设置 overflow: hidden,设置相对定位;2. img设置绝对定位,设置最 ...
- 不固定图片宽高瀑布流_类百度图片的固定高度横向瀑布流js方法及纯css实现的方法记录...
微信图片_20190117105118.png 纯css实现代码: Document div{ display: flex;/*显示模式设置为弹性盒子*/ flex-wrap: wrap;/*进行强制 ...
- JS快速获取图片宽高的方法
JS快速获取图片宽高的方法 快速获取图片的宽高其实是为了预先做好排版样式布局做准备,通过快速获取图片宽高的方法比onload方法要节省很多时间,甚至一分钟以上都有可能,并且这种方法适用主流浏览器包括I ...
- vue-preview动态获取图片宽高并增加旋转功能
vue-preview是一个常用的图片查看器,微博网页版就是用的这个插件: 我在项目中也用过这个插件,总体来说,还是比较满意.但是缺少一个图片旋转功能. 安装使用 第一步:安装 npm i vue-p ...
- android 通过图片url获取宽高_通过 URL 获取图片宽高优化
一张小图.png 前言 客户端研发时,有时会有这样的需求,需要根据图片链接地址获取图片的宽高来进行界面排版. 一般比较正规的做法,是服务端在返回数据时将图片的信息属性一起带回来,这也符合轻客户端设计规 ...
- Flutter图片宽高获取
本地图片宽高获取 网络图片宽高获取 原理 通过在其ImageProvider上调用resolve来读取ImageStream 1.本地图片宽高获取 以IM发送本地图片为例 sendImage: (St ...
- Glide获取网络图片宽高,并动态设置图片宽高
因Android手机屏幕尺寸较多,当imageview宽设置match_parent,高固定时.会导致图片拉伸或裁剪.目前可通过获取图片宽高,动态设置imageview宽高比例,等比例缩放图片. ...
- 前端获取图片宽高的几种方法
有时候动态加载图片,会因为图片宽高导致显示拉伸情况,如果能根据图片URL地址获取到图片的宽高,再进行渲染,就可以了,以下两种方案供参考: 方法一: // 图片地址 var imgUrl = " ...
- img图片太大设置图片宽高,图片显示变形解决办法
当img图片太大时,设置图片宽高图片显示就会变形,object-fit属性就可以很好的解决这个问题: <div><img src="https://img0.baidu.c ...
最新文章
- Oracle和Mysql的 != 差异
- web主题公园版权信息破解:script.js加密文件
- 【转】BLE 学习记录
- mysql设置作业_MySQL-作业1
- 全面剖析 Knative Eventing 0.6 版本新特性
- python教程龟叔_Python新手入门
- Esxi自动化配置脚本
- andorid关于selector更换图片失效
- 太原理工大学荣获2020(第二届)集成电路EDA设计精英挑战赛一等奖
- Postgresql中存储过程(函数)调用存储过程(函数)时应用注意的问题
- Axure RP 8下载
- List转Map-JDK8实现
- 【后端】短信验证码4位或6位
- 4.深度强化学习------PPG(Phasic Policy Gradient)算法资料+原理整理
- Programmer Study Guide-游戏程序员指南
- check 和nocheck
- ping命令的常用参数
- 部署XPE镜像文件到虚拟机
- 基于LightGBM分类实现英雄联盟数据预测(二)
- mysql5.7性能提升一百倍调优