ios端浏览器拍照上传到服务器,图片被旋转90度 php 解决方案
2024-08-28 04:01:52
1、可以通过前端进行解决,本案例通过后端解决的
判断请求的浏览器的ua,如果是ios浏览器则进行90度旋转
重点来了:
必须确保检测的图片是ios设备上传的完整图片,不要在前端压缩过的,因为压缩后的图片都是通过Canvas重新生成的新图片,所以不包含相关扩展信息
如果前端要压缩请在前端获取扩展信息或者直接在前端转角度(从原始文件中获取扩展信息)
前端处理方案 请百度 exif.js
if(strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone')||strpos($_SERVER['HTTP_USER_AGENT'], 'iPad')){
try{
$picAddr=$_FILES['file']['tmp_name'];
$exif = @exif_read_data($picAddr);
if(isset($exif['Orientation'])){
$image = imagecreatefromjpeg($picAddr);
if($exif['Orientation'] == 3) {
$result = imagerotate($image, 180, 0);
imagejpeg($result, $picAddr, 100);
} elseif($exif['Orientation'] == 6) {
$result = imagerotate($image, -90, 0);
imagejpeg($result, $picAddr, 100);
} elseif($exif['Orientation'] == 8) {
$result = imagerotate($image, 90, 0);
imagejpeg($result, $picAddr, 100);
}
isset($result) && imagedestroy($result);
imagedestroy($image);
}
}catch(\Exception $e){
//echo $e->getMessage();
}
}
没踩坑一次 进步一点点
最新文章
- iOS之触摸及手势
- jquery+php+mysql实现Ajax省市县三级联动
- netty 解决TCP粘包与拆包问题(一)
- css重点章节复习—布局-边框-边距-浮动 (部分)
- android 学习随笔二十八(应用小知识点小结 )
- Java API —— File类
- 实验一:点亮led
- 无效的 URI: 未能分析证书颁发机构/主机
- linux 配置静态IP
- 第3章文件I/O总结
- Flux是一个Facebook团队的前端开发架构
- hdu2141AC代码分享
- 再起航,我的学习笔记之JavaScript设计模式05(简单工程模式)
- API得到Windows版本
- python崩溃到现在居然还没有放弃的Day07
- 每天一个linux命令(4):mkdir
- PHP 传值操作和传地址操作
- 邮局加强版:四边形不等式优化DP
- 【Naive Splay Template】
- Linux环境下$开头的相关变量的含义