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转成EXE文件
Oct 09 PHP
推荐php模板技术[转]
Jan 04 PHP
PHP 一个比较完善的简单文件上传
Mar 25 PHP
php file_get_contents函数轻松采集html数据
Apr 22 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
php检测iis环境是否支持htaccess的方法
Feb 18 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
PHPCMS V9 添加二级导航的思路详解
Oct 20 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
PHP+mysql防止SQL注入的方法小结
Apr 27 PHP
Laravel框架实现多数据库连接操作详解
Jul 12 PHP
Yii框架数据库查询、增加、删除操作示例
Oct 14 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中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
JavaScript将一个数组插入到另一个数组的方法
2015/03/19 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
让Django支持Sql Server作后端数据库的方法
2018/05/29 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
python微信撤回监测代码
2019/04/29 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
python3.7调试的实例方法
2020/07/21 Python
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
办公室文秘自我评价
2013/09/21 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript