利用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');
这张是原图:
下面的按比例分割后缩小的图片: