菜鸡源码,专注精品下载!
当前位置:首页 > 建站教程 > 建站知识

PHP图片压缩和裁剪处理方法

发布时间:2024-01-05  栏目:建站知识   浏览:   分类:php教程 解压压缩

PHP图片压缩裁剪处理方法可以通过GD库或Imagick库实现。首先,需要安装并引入相应的库。然后,使用`imagecreatefromjpeg()`、`imagecreatefrompng()`等函数创建图像资源。接下来,可以使用`imagecopyresampled()`函数进行缩放,或者使用`imagecrop()`函数进行裁剪。最后,使用`imagejpeg()`、`imagepng()`等函数将处理后的图像输出到浏览器或保存到文件。在处理过程中,可以设置质量参数以控制压缩效果。

当网站图片尺寸过大、图片过多的情况下,会引起页面加载缓慢的问题。人工手动修改图片肯定工程量太大,所以最好的方法就是用程序来自动压缩裁剪图片了,分享一段自用的php图片压缩裁剪处理方法。

/***图片压缩处理*@paramstring$sFile图片路径*@paramint$iWidth自定义图片宽度*@paramint$iHeight自定义图片高度*/functiongetThumb($sFile,$iWidth,$iHeight){//判断该图片是否存在if(!file_exists(public_path().$sFile))return$sFile;//判断图片格式$attach_fileext=get_filetype($sFile);if(!in_array($attach_fileext,array('jpg','png','jpeg'))){return$sFile;}//压缩图片$sFileNameS=str_replace(".".$attach_fileext,"_".$iWidth.'_'.$iHeight.'.'.$attach_fileext,$sFile);//判断是否已压缩图片,若是则返回压缩图片路径if(file_exists(public_path().$sFileNameS)){return$sFileNameS;}//解决手机端上传图片被旋转问题if(in_array($attach_fileext,array('jpeg'))){adjustPicOrientation(public_path().$sFile);}//生成压缩图片,并存储到原图同路径下resizeImage(public_path().$sFile,public_path().$sFileNameS,$iWidth,$iHeight);if(!file_exists(public_path().$sFileNameS)){return$sFile;}return$sFileNameS;}/***获取文件后缀名*/functionget_filetype($filename){$extend=explode(".",$filename);returnstrtolower($extend[count($extend)-1]);}/***解决手机上传图片被旋转问题*@paramstring$full_filename文件路径*/functionadjustPicOrientation($full_filename){$exif=exif_read_data($full_filename);if($exif&&isset($exif['Orientation'])){$orientation=$exif['Orientation'];if($orientation!=1){$img=imagecreatefromjpeg($full_filename);$mirror=false;$deg=0;switch($orientation){case2:$mirror=true;break;case3:$deg=180;break;case4:$deg=180;$mirror=true;break;case5:$deg=270;$mirror=true;break;case6:$deg=270;break;case7:$deg=90;$mirror=true;break;case8:$deg=90;break;}if($deg)$img=imagerotate($img,$deg,0);if($mirror)$img=_mirrorImage($img);//$full_filename=str_replace('.jpg',"-O$orientation.jpg",$full_filename);新文件名imagejpeg($img,$full_filename,95);}}return$full_filename;}resizeImage(public_path().$sFile,public_path().$sFileNameS,$iWidth,$iHeight);/***生成图片*@paramstring$im源图片路径*@paramstring$dest目标图片路径*@paramint$maxwidth生成图片宽*@paramint$maxheight生成图片高*/functionresizeImage($im,$dest,$maxwidth,$maxheight){$img=getimagesize($im);switch($img[2]){case1:$im=@imagecreatefromgif($im);break;case2:$im=@imagecreatefromjpeg($im);break;case3:$im=@imagecreatefrompng($im);break;}$pic_width=imagesx($im);$pic_height=imagesy($im);$resizewidth_tag=false;$resizeheight_tag=false;if(($maxwidth&&$pic_width>$maxwidth)||($maxheight&&$pic_height>$maxheight)){if($maxwidth&&$pic_width>$maxwidth){$widthratio=$maxwidth/$pic_width;$resizewidth_tag=true;}if($maxheight&&$pic_height>$maxheight){$heightratio=$maxheight/$pic_height;$resizeheight_tag=true;}if($resizewidth_tag&&$resizeheight_tag){if($widthratio<$heightratio)$ratio=$widthratio;else$ratio=$heightratio;}if($resizewidth_tag&&!$resizeheight_tag)$ratio=$widthratio;if($resizeheight_tag&&!$resizewidth_tag)$ratio=$heightratio;$newwidth=$pic_width*$ratio;$newheight=$pic_height*$ratio;if(function_exists("imagecopyresampled")){$newim=imagecreatetruecolor($newwidth,$newheight);imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);}else{$newim=imagecreate($newwidth,$newheight);imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);}imagejpeg($newim,$dest);imagedestroy($newim);}else{imagejpeg($im,$dest);}}

相关文章

    无相关信息
评论
建站知识
建站知识
使用技巧
调试安装
运营推广