项目要求将图片上传的任意图片按固定比例进行转换,没办法自己就写了一个,代码如下:
public function cropImage($imagePath, $savePath, $scale){
$imgHandler = $this->model('Picture_Model_Image');
$imgHandler->setSrcImg($imagePath);
$imgHandler->setCutType(2);//指明为手工裁切
list($scaleW, $scaleH) = explode(':', $scale);
$imgH = $imgHandler->src_h;
$imgW = $imgHandler->src_w;
if(($imgW / $scaleW * $scaleH) < $imgH){
$cropH = ($imgW / $scaleW * $scaleH);
$cropW = $imgW;
}else{
$cropW = $imgH / $scaleH * $scaleW;
$cropH = $imgH;
}
$cropInitX = ($imgW - $cropW) / 2;
$cropInitY = ($imgH - $cropH) / 2;
$imgHandler->setSrcCutPosition($cropInitX, $cropInitY);// 源图起点坐标
$imgHandler->setRectangleCut($cropW, $cropH);// 裁切尺寸
$imgHandler->