博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP图片裁剪类
阅读量:4948 次
发布时间:2019-06-11

本文共 8870 字,大约阅读时间需要 29 分钟。

1 
$width){ 25 //裁剪 26 // 改变后的图象的比例 27 $resize_ratio = ($width) / ($height); 28 // 实际图象的比例 29 $ratio = ($src_width) / ($src_height); 30 31 if ($ratio >= $resize_ratio) { 32 // 高度优先 33 //截取图片中间那一段 34 $img_center_x = intval(($src_width-($src_height * $resize_ratio))/2); 35 //如果不需要只截取中间那一段,而是从图片x=0的地方截取,则$img_center_x=0 36 $newimg = @imagecreatetruecolor($width, $height); 37 $color = imagecolorallocate($newimg,255,255,255); 38 imagecolortransparent($newimg,$color); 39 imagefill($newimg,0,0,$color); 40 @imagecopyresampled($newimg, $src_img, 0, 0, $img_center_x, 0, $width, $height, (($src_height) * $resize_ratio), $src_height); 41 // ImageJpeg($newimg); 42 }else{ 43 // 宽度优先 44 //截取图片中间那一段 45 $img_center_y = intval(($src_height-($src_width / $resize_ratio))/2); 46 //如果不需要只截取中间那一段,而是从图片y=0的地方截取,则$img_center_y=0 47 $newimg = @imagecreatetruecolor($width, $height); 48 $color = imagecolorallocate($newimg,255,255,255); 49 imagecolortransparent($newimg,$color); 50 imagefill($newimg,0,0,$color); 51 @imagecopyresampled($newimg, $src_img, 0, 0, 0, $img_center_y, $width, $height, $src_width, (($src_width) / $resize_ratio)); 52 } 53 }else{ 54 //不裁剪 55 $newimg = @imagecreatetruecolor($src_width, $src_height); 56 $color = imagecolorallocate($newimg,255,255,255); 57 imagecolortransparent($newimg,$color); 58 imagefill($newimg,0,0,$color); 59 @imagecopyresampled($newimg, $src_img, 0, 0, 0, 0, $src_width, $src_height, $src_width, $src_height); 60 } 61 62 //统一保存为png格式 63 imagepng($newimg, $dest_path); 64 65 //gc 66 imagedestroy($src_img); 67 imagedestroy($newimg); 68 } 69 70 public static function thumb_img($src_path, $dest_path,$width,$height){ 71 72 $info_arr = getimagesize($src_path); 73 $src_width = $info_arr[0]; 74 $src_height = $info_arr[1]; 75 76 switch( $info_arr['mime'] ) { 77 case 'image/gif': 78 $src_img = imagecreatefromgif( $src_path ); 79 break; 80 case 'image/jpeg': 81 $src_img = imagecreatefromjpeg( $src_path ); 82 break; 83 case 'image/png': 84 $src_img = imagecreatefrompng( $src_path ); 85 break; 86 } 87 88 // 改变后的图象的比例 89 $resize_ratio = ($width) / ($height); 90 // 实际图象的比例 91 $ratio = ($src_width) / ($src_height); 92 93 if ($ratio >= $resize_ratio) { 94 // 高度优先 95 //截取图片中间那一段 96 $img_center_x = intval(($src_width-($src_height * $resize_ratio))/2); 97 //如果不需要只截取中间那一段,而是从图片x=0的地方截取,则$img_center_x=0 98 $newimg = @imagecreatetruecolor($width, $height); 99 $color = imagecolorallocate($newimg,255,255,255); 100 imagecolortransparent($newimg,$color); 101 imagefill($newimg,0,0,$color); 102 @imagecopyresampled($newimg, $src_img, 0, 0, $img_center_x, 0, $width, $height, (($src_height) * $resize_ratio), $src_height);103 // ImageJpeg($newimg);104 }else{105 // 宽度优先106 //截取图片中间那一段107 $img_center_y = intval(($src_height-($src_width / $resize_ratio))/2);108 //如果不需要只截取中间那一段,而是从图片y=0的地方截取,则$img_center_y=0109 $newimg = @imagecreatetruecolor($width, $height);110 $color = imagecolorallocate($newimg,255,255,255); 111 imagecolortransparent($newimg,$color); 112 imagefill($newimg,0,0,$color); 113 @imagecopyresampled($newimg, $src_img, 0, 0, 0, $img_center_y, $width, $height, $src_width, (($src_width) / $resize_ratio));114 }115 116 //统一保存为png格式117 imagepng($newimg, $dest_path);118 119 //gc120 imagedestroy($src_img);121 imagedestroy($newimg);122 }123 124 /*125 * 按比例缩放图片,然后居中裁剪126 * $src_path 源文件路劲127 * $dest_path 裁剪图片存放位置128 * $width 裁剪图片宽带129 * $height 裁剪图片高度130 */131 public static function clip_img($src_path, $dest_path, $width, $height) {132 if( file_exists($src_path) ) {133 $info_arr = getimagesize($src_path);134 $src_width = $info_arr[0];135 $src_height = $info_arr[1];136 $src_ratio = $src_height / $src_width;137 $dest_ratio = $height / $width;138 139 if( $src_ratio < $dest_ratio ) {140 $ratio_width = $width;141 $ratio_height = ( $height * $src_height ) / $src_width;142 }else if( $src_ratio > $dest_ratio ) {143 $ratio_height = $height;144 $ratio_width = ( $width * $src_width ) / $src_height;145 }else {146 $ratio_height = $height;147 $ratio_width = $width;148 }149 150 switch( $info_arr['mime'] ) {151 case 'image/gif':152 $src_img = imagecreatefromgif( $src_path );153 break;154 case 'image/jpeg':155 $src_img = imagecreatefromjpeg( $src_path );156 break;157 case 'image/png':158 $src_img = imagecreatefrompng( $src_path );159 break;160 case 'image/bmp':161 //待处理162 break;163 }164 165 //等比例缩放图片166 $thumb_img = imagecreatetruecolor( intval($ratio_width), intval($ratio_height) ) ;167 $color = imagecolorallocate($thumb_img,255,255,255); 168 imagecolortransparent($thumb_img,$color); 169 imagefill($thumb_img,0,0,$color); 170 imagecopyresampled( $thumb_img, $src_img, 0, 0, 0, 0, $ratio_width, $ratio_height, $src_width, $src_height);171 172 //剪裁173 $clip_img = imagecreatetruecolor( intval($width), intval($height) );174 imagecopy( $clip_img, $thumb_img, 0, 0, ( $ratio_width - $width ) / 2, ( $ratio_height - $height ) / 2, $width, $height );175 176 //统一保存为png格式177 imagepng($clip_img, $dest_path);178 179 //gc180 imagedestroy($src_img);181 imagedestroy($thumb_img);182 imagedestroy($clip_img);183 } 184 }185 186 /*187 * 按比例缩放图片188 * type = 1 按宽为标准缩放 2 按高为标准缩放 189 */190 public static function scale_img($src_path,$dest_path,$type,$len){191 if( file_exists($src_path) ){192 $info_arr = getimagesize($src_path);193 $src_width = $info_arr[0];194 $src_height = $info_arr[1];195 if($type == 1){196 $des_width = $len;197 $des_height = ( $src_height * $des_width ) / $src_width;198 }else{199 $des_height = $len;200 $des_width = ( $src_width * $des_height ) / $src_height;201 }202 203 switch( $info_arr['mime'] ) {204 case 'image/gif':205 $src_img = imagecreatefromgif( $src_path );206 break;207 case 'image/jpeg':208 $src_img = imagecreatefromjpeg( $src_path );209 break;210 case 'image/png':211 $src_img = imagecreatefrompng( $src_path );212 break;213 case 'image/bmp':214 //待处理215 break;216 }217 218 $thumb_img = imagecreatetruecolor( intval($des_width), intval($des_height) );219 $color = imagecolorallocate($thumb_img,255,255,255); 220 imagecolortransparent($thumb_img,$color); 221 imagefill($thumb_img,0,0,$color); 222 imagecopyresampled( $thumb_img, $src_img, 0, 0, 0, 0, $des_width, $des_height, $src_width, $src_height);223 224 225 //统一保存为png格式226 imagepng($thumb_img, $dest_path);227 228 //gc229 imagedestroy($src_img);230 imagedestroy($thumb_img);231 }232 }233 234 }

 

转载于:https://www.cnblogs.com/pandang/p/4849715.html

你可能感兴趣的文章
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
jq工具函数(九)使用$.extend()扩展Object对象
查看>>
如何监视性能和分析等待事件
查看>>
PAT 1058. 选择题(20)
查看>>
理解MapReduce计算构架
查看>>
python爬虫Day2:爬取豆瓣电影信息top250
查看>>
ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理
查看>>
Jmeter参数的AES加密使用
查看>>
hdu 2594 Simpsons’ Hidden Talents【kmp】
查看>>
numpy两列数据合并的方法
查看>>
多机联合产生负载
查看>>
kubelet Pod status的状态分析
查看>>
常见错误: 创建 WCF RIA Services 类库后, 访问数据库出错
查看>>
对Javascript面向对象的理解
查看>>
已知一个日期和天数, 求多少天后的日期(是那个超时代码的AC版)
查看>>
CAS 逻辑流程图
查看>>
hyperopt中文文档:Scipy2013
查看>>
testng+IEDriverServer+yum+tomcat下载软件包
查看>>
perl6 Net::HTTP 不能发送https请求
查看>>
python 远程 部署和运行
查看>>