利用php里面的GD库可以轻松地把图片进行处理,下面的函数可以把一张图片切割为5部分并按比例(原图的四分之一)缩小保存图片。
/**
* @param $img :生成的图片
* @param $source_img :要处理的图片
* @param $x :从原图x坐标开始截取(原图左上角为0)
* @param $y :从原图y坐标开始截取(原图左上角为0)
* @param $d_x :生成图片的宽度
* @param $d_y :生成图片的高度
* @param $file_name :保存的文件名称
* @param $w :载入的原图宽度
* @param $h :载入的原图高度
*/
private function makeSmallImg($img,$source_img,$x,$y,$d_w,$d_h,$w,$h,$file_name)
{
imagecopyresampled($img, $source_img, 0, 0, $x, $y, $d_w, $d_h, $w, $h);
imagejpeg($img,$file_name,100);//将缩略的结果保存,质量为75(0~100)
return ;
}
//把图片分成几份均等缩略图
public function departImg($file)
{
list($w,$h) = getimagesize($file);//获取宽、高
$source = self::createImg($file);//创建原图
$img = imagecreatetruecolor($w/4, $h/4);//填充背景色
self::makeSmallImg($img, $source, $w/2, 0, $w/2, $h/2, $w, $h,PUBLIC_DIR.'/1.jpg');//右上角
self::makeSmallImg($img, $source, $w/2, $h/2, $w/2, $h/2, $w, $h,PUBLIC_DIR.'/2.jpg');//右下角
self::makeSmallImg($img, $source, $w/4, $h/4, $w/2, $h/2, $w, $h,PUBLIC_DIR.'/3.jpg');//中间部分
self::makeSmallImg($img, $source, 0, $h/2, $w/2, $h/2, $w, $h,PUBLIC_DIR.'/4.jpg');//左下角
self::makeSmallImg($img, $source, 0, 0, $w/2, $h/2, $w, $h,PUBLIC_DIR.'/5.jpg');//左上角
self::makeSmallImg($img, $source, 0, 0, $w/4, $h/4, $w, $h,PUBLIC_DIR.'/6.jpg');//原图等比缩略
//销毁原图和临时内存图片,释放资源
imagedestroy($source);
imagedestroy($img);
return is_file(PUBLIC_DIR.'/6.jpg') ? true : false;
}
/**
* 生成图片
*/
protected function createImg($file)
{
$infos = explode('.', $file);
$ext = strtolower($infos[count($infos) - 1]);
if ($ext === 'jpeg')
{
$ext = 'jpg';
};
$img = null;
switch ($ext)
{
case 'png' : $img = imagecreatefrompng($file);break;
case 'jpg' : $img = imagecreatefromjpeg($file);break;
case 'gif' : $img = imagecreatefromgif($file);break;
default:break;
}
return $img;
}
departImg(PUBLIC_DIR.'/test.jpg');
这张是原图:

下面的按比例分割后缩小的图片:
