<?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;
}
?>