图片比例转换算法
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>
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>
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- 动易2006序列号破解算法公布
- 文件遍历排序函数
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- upload上传单张图片
- 图片引发的溢出危机(图)
- Ruby实现的矩阵连乘算法
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- C#插入法排序算法实例分析
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua实现split函数