业务经理

微信扫描以上二维码

028-61286886

技术咨询

怎样防止系统自动把图片旋转90度

迅睿框架 更新 2023-04-14 11:37:00 qq119604

开启图片压缩时怎样防止系统自动把图片旋转90度?

方案

  • 迅睿框架联合创始人 #1 · 2023-03-31 11:15:21
    cms并不会进行旋转图片
  • qq119604 #2 · 2023-03-31 16:56:51
    迅睿框架联合创始人 只有移动端上传手机照片的时候会自动旋转,如果开启压缩的话,缩略图和原图都会旋转,不开启压缩只有缩略图旋转。
  • qq119604 #3 · 2023-03-31 16:59:19
    感觉是手机拍摄角度的exif不一样。
  • qq119604 #4 · 2023-04-14 11:37:00
    问题找到了,就是手机拍摄角度影响了exif信息。修改了一下Image类,用exif扩展把图片旋转回来即可。

    // 图片压缩处理
    public function reduce($imgsrc, $cw) { list($width, $height, $type) = getimagesize($imgsrc); $angle = $this->detect_orientation($imgsrc); if ($angle===90 || $angle===270){ $width = $height; $height = $width; } if ($width > $cw) { $per = $cw / $width;//计算比例 $new_width = floor($width * $per); //压缩后的图片宽 $new_height = floor($height * $per); //压缩后的图片高 switch ($type) { case 1: // gif break; case 2: //header('Content-Type:image/jpeg'); $image_wp = imagecreatetruecolor($new_width, $new_height); $image = imagecreatefromjpeg($imgsrc); if($angle) { $image = imagerotate($image, $angle, 0); } imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); //90代表的是质量、压缩图片容量大小 imagejpeg($image_wp, $imgsrc, 100); imagedestroy($image_wp); imagedestroy($image); break; case 3: header('Content-Type:image/png'); $image_wp = imagecreatetruecolor($new_width, $new_height); $image = imagecreatefrompng($imgsrc); if($angle) { $image = imagerotate($image, $angle, 0); } //2.上色 $color=imagecolorallocate($image_wp,255,255,255); //3.设置透明 imagecolortransparent($image_wp,$color); imagefill($image_wp,0,0,$color); imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); //90代表的是质量、压缩图片容量大小 imagejpeg($image_wp, $imgsrc, 100); imagedestroy($image_wp); imagedestroy($image); break; case 18: header('Content-Type:image/webp'); $image_wp = imagecreatetruecolor($new_width, $new_height); $image = imagecreatefromwebp($imgsrc); if($angle) { $image = imagerotate($image, $angle, 0); } imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); //90代表的是质量、压缩图片容量大小 imagewebp($image_wp, $imgsrc, 100); imagedestroy($image_wp); imagedestroy($image); break; } } else { CI_DEBUG(@反馈BUG) && log_message('debug', '系统要求宽度>'.$cw.'px才进行压缩处理,当前图片宽度='.$width.',不满足压缩条件:'.$imgsrc); } return; } //检测图片的拍摄角度, 返回需要旋转回正常的角度,需要开启php的exif扩展 public function detect_orientation($imgsrc) { if (function_exists('exif_read_data')) { $ori_type = exif_read_data($imgsrc)['Orientation']; switch ($ori_type) { case 6: return 270; case 3: return 180; case 8: return 90; default: return 0; } } else { return 0; } }

迅睿系统漏洞

在线考试竞赛系统
在线考试竞赛系统(2026-09-12)
增加投票功能 考试功能拓展 注意:更新后需要执行系统更新,更新数...
网上信箱
网上信箱(2026-09-12)
修复新版本兼容问题
GeoSeo收录宝
GeoSeo收录宝(2026-09-12)
1 优化Update.php文件,解决版本在线升级不完整问题 2 ...
GeoSeo工具箱
GeoSeo工具箱(2026-09-11)
修正历史记录推送
微信系统
微信系统(2026-09-11)
增加数据统计总览界面 账号管理增加服务和公众号的区别 菜单管理支持更...
答题系统
答题系统(2026-09-11)
一站式在线答题系统,支持真题考试、题库练习和错题本,适合培训、考证、...
阿里云滑动验证码
阿里云滑动验证码(2026-09-10)
采用阿里云验证码替换迅睿系统自带的图片验证码和滑动验证码。后台设置方...
下载Plus
下载Plus(2026-09-09)
为网站附件下载加上“计数、限次、统计、防护”四重能力:按用户组控制下...
全库搜索
全库搜索(2026-09-09)
修复全模块搜索时,删除按钮点击无效的bug
在线客服
在线客服(2026-09-09)
增加消息提示音