<?php /* img_deal(String $file,String $save,Array $options)参数 $file 用户上传文件的路径 $save 保存的路径 $options参数: - type 裁切(clip)或者是缩放(scale) 默认裁切 - scale参数 (至少写一个参数) - scale_w 缩放后的宽度 (如果只设置其中一值则按原图比例缩放) - scale_h 缩放后的高度 - clip参数 (全都得写) - clip_w 裁切后的宽度 - clip_h 裁切后的高度 - clip_x 裁切起点x坐标(以图片左上顶点为原点,向下y正方向,向右x正方向) - clip_y 裁切起点y坐标 */ function img_deal($file,$save,$options){ //上传的原图片 $img_src = imagecreatefromjpeg($file); //原图片的宽高 $src_w = imagesx($img_src); $src_h = imagesy($img_src); switch ($options['type']) { case 'scale': if(is_numeric($options['scale_w']) && is_numeric($options['scale_h'])){ $dist_w = $options['scale_w']; $dist_h = $options['scale_h']; }elseif(is_numeric($options['scale_w'])){ $dist_w = $options['scale_w']; $dist_h = $src_h*$dist_w/$src_w; }elseif(is_numeric($options['scale_h'])){ $dist_h = $options['scale_h']; $dist_w = $src_w*$dist_h/$src_h; }else{ echo 'Image deal is Failed<br>'; return false; } //设置目标图片大小 $img_dist = imagecreatetruecolor($dist_w,$dist_h); //图片进行处理 imagecopyresampled($img_dist, $img_src, 0, 0, 0, 0, $dist_w, $dist_h, $src_w, $src_h); break; default: //设置目标图片大小 $img_dist = imagecreatetruecolor($options['clip_w'],$options['clip_h']); $keys = array_keys($options); $str = implode($keys, ','); preg_match_all('/clip_/', $str, $matches); if(count($matches[0]) !== 4){ echo 'Image deal is Failed<br>'; return false; } //图片进行处理 imagecopyresampled($img_dist, $img_src, 0, 0, $options['clip_x'], $options['clip_y'], $options['clip_w'], $options['clip_h'], $options['clip_w'], $options['clip_h']); break; } //将图片保存 $status = imagejpeg($img_dist,$save); if($status){ echo 'Image deal is Success<br>'; }else{ echo 'Image deal is Failed<br>'; } //释放内存空间 imagedestroy($img_dist); imagedestroy($img_src); //返回保存状态结果 return $status; } ?>
标签:src,dist,函数,img,echo,GD,clip,options,图片 From: https://www.cnblogs.com/shaoyunfeng93/p/16732051.html