迅睿CMS框架是一款PHP8高性能·简单易用的CMS开源开发框架,基于MIT开源许可协议发布,免费且不限制商业使用,是免费开源的产品,以万端互联为设计理念,支持的微信公众号、小程序、APP客户端、移动端网站、PC网站等多终端式管理系统。
联系官方销售客服
1835022288
028-61286886
开启图片压缩时怎样防止系统自动把图片旋转90度?
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; } }