您的位置:首页 > 编程语言 > PHP开发

PHP图片缩放 加白边

2016-11-26 11:19 706 查看
/**
* [cut_img 图片缩放加白边]
* Author: 程威明
* @param  array $imgs    图片路径数组
* @param  array $info    图片宽高数组array('width','height')
* @param  bool $cover    是否覆盖原图,默认不覆盖
* @return array          若覆盖原图返回裁剪数量,不覆盖返回图片路径组成的数组
*/
function zoom_img($imgs=array(),$infoarr=array(500,500),$cover=false)
{
//判断是否为数组(必须是一个以图片路径组成的数组)
$imgs = is_array($imgs)?$imgs:array($imgs);

$i=0;
foreach($imgs as $file){
//如果不覆盖原图,可重新定义图片保存路径
if(false==$cover){
$file = $file;
}

//要保存的宽
$saveWidth = $infoarr[0];

//要保存的高
$saveHeight = $infoarr[1];

//判断图片是否存在
if(!file_exists($file)) continue;

//获取图片信息
$imgize = getimagesize($file);

//图片宽度
$width = $imgize[0];
//图片高度
$height = $imgize[1];

//原宽高比
$ratio = $width/$height;

//判断图片原宽高比与裁剪宽高比的大小
if($width>=$height){
$height = $saveWidth/$ratio;
$width = $saveWidth;
}else{
$width = $saveHeight*$ratio;
$height = $saveHeight;
}

//创建源图的实例
$src = imagecreatefromstring(file_get_contents($file));

if(false!=$src){
//创建图像
$final_image = imagecreatetruecolor($saveWidth, $saveHeight);
//定义颜色
$color = imagecolorallocate($final_image, 255, 255, 255);
//定义为透明色
imagecolortransparent($final_image,$color);
//填充
imagefill($final_image, 0, 0, $color);
$x = round(($saveWidth - $width) / 2);
$y = round(($saveHeight - $height) / 2);
imagecopyresized($final_image, $src, $x, $y, 0, 0, $width, $height,$imgize[0],$imgize[1]);
//保存
if(false==$cover){
$file = rtrim(dirname($file),'/').'/z_'.basename($file);
$save_file[] = $file;
}
imagejpeg($final_image,$file);
imagedestroy($final_image);
imagedestroy($src);
}

$i++;
}

if(false==$cover){
return $save_file;
}else{
return $i;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息