您的位置:首页 > 其它

图片比例转换算法

2016-01-12 18:34 627 查看
项目要求将图片上传的任意图片按固定比例进行转换,没办法自己就写了一个,代码如下:

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->setDstImg($savePath);
return $imgHandler->createImg($cropW, $cropH);
}

大概思路是这样的:

cropW 和 <span style="font-family: Arial, Helvetica, sans-serif;">cropH 是需要裁剪的图片的大小,</span><pre name="code" class="php">cropInitX 和 <span style="font-family: Arial, Helvetica, sans-serif;">cropInitY 是裁剪的初始位置,默认是取最中间的位置</span>
<span style="font-family: Arial, Helvetica, sans-serif;">首先是根据图片的宽, 按照比例算出  高按照比例的尺寸 ,如果算出的高, 比图片的高大, 那么就</span><pre name="code" class="php"><span style="font-family: Arial, Helvetica, sans-serif;">图片的高, 按照比例算出  宽按照比例的尺寸。得到尺寸后, (用原图的宽/裁剪后的宽)/2  就可以得到裁剪的X坐标,依次类推。 </span>


<span style="font-family: Arial, Helvetica, sans-serif;">
</span>


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息