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 相关文章推荐
用文本文件制作留言板提示(上)
Oct 09 PHP
在PHP中读取和写入WORD文档的代码
Apr 09 PHP
PHP数组传递是值传递而非引用传递概念纠正
Jan 31 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
在Win7 中为php扩展配置Xcache
Oct 08 PHP
php有道翻译api调用方法实例
Dec 22 PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
Jun 06 PHP
php微信开发之音乐回复功能
Jun 14 PHP
实例讲解php将字符串输出到HTML
Jan 27 PHP
Git命令之分支详解
Mar 02 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
substr()函数中文版
2006/10/09 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
python中私有函数调用方法解密
2016/04/29 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
学习python的前途 python挣钱
2019/02/27 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
几道Web/Ajax的面试题
2016/11/05 面试题
2014小学年度工作总结
2014/12/20 职场文书
护理专业自荐信范文
2015/03/06 职场文书
求职自我评价怎么写
2015/03/09 职场文书
七夕情人节问候语
2015/11/11 职场文书
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL