Codeigniter实现智能裁剪图片的方法


Posted in PHP onJune 12, 2014

一副1024*768大小的图片,裁剪到240*240大小,裁剪后不失真,尽可能保留图片主题含义。

我使用到的方法:

1. 先将图片等比例缩略到可以裁剪的大小;

如果是宽幅图片,则按高度等比例缩放到高度 = 240px,窄幅图片(高度大于宽度)则按宽度等比例缩放;

2. 按长宽格式居中裁剪;

保留缩略后的图片中间部分;

$this->load->library('image_lib');            
    list($width, $height) = getimagesize("upload/123.jpg");
    $config['image_library'] = 'gd2';
    $config['source_image'] = 'upload/123.jpg';
    $config['maintain_ratio'] = TRUE;
    if($width >= $height)
    {
        $config['master_dim'] = 'height';
    }else{
        $config['master_dim'] = 'width';
    }
    $config['width'] = 240;
    $config['height'] = 240;
    $this->image_lib->initialize($config);
    $this->image_lib->resize();    $config['maintain_ratio'] = FALSE;
    if($width >= $height)
    {
        $config['x_axis'] = floor(($width * 240 / $height - 240)/2);
    }else{
        $config['y_axis'] = floor(($height * 240 / $width - 240)/2);
    }
    $this->image_lib->initialize($config);
    $this->image_lib->crop();
PHP 相关文章推荐
PHP的宝库目录--PEAR
Oct 09 PHP
PHP+javascript液晶时钟
Oct 09 PHP
PHP错误提示的关闭方法详解
Jun 23 PHP
基于PHP创建Cookie数组的详解
Jul 03 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
php生成唯一的订单函数分享
Feb 02 PHP
列举PHP的Yii 2框架的开发优势
Jul 03 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
php mysql 封装类实例代码
Sep 18 PHP
PHP使用Alexa API获取网站的Alexa排名例子
Jun 12 #PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
Jun 12 #PHP
Codeigniter生成Excel文档的简单方法
Jun 12 #PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
Jun 12 #PHP
让CodeIgniter数据库缓存自动过期的处理的方法
Jun 12 #PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 #PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 #PHP
You might like
深入PHP异步执行的详解
2013/06/03 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
python编码最佳实践之总结
2016/02/14 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
python设置随机种子实例讲解
2019/09/12 Python
python能做什么 python的含义
2019/10/12 Python
基于python求两个列表的并集.交集.差集
2020/02/10 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
斯凯奇澳大利亚官网:SKECHERS澳大利亚
2018/03/31 全球购物
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
大学生创业计划书的用途
2014/01/08 职场文书
2014年少先队工作总结
2014/12/03 职场文书
小学生优秀评语
2014/12/29 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
毕业证明书
2015/06/19 职场文书
django 认证类配置实现
2021/11/11 Python
详解JAVA的控制语句
2021/11/11 Java/Android