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 Socket配置以及实例的详细介绍
Jun 13 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
mac系统下为 php 添加 pcntl 扩展
Aug 28 PHP
php二维码生成以及下载实现
Sep 28 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
PHP抽象类和接口用法实例详解
Jul 20 PHP
PHP实现的AES 128位加密算法示例
Sep 16 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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
Python中的zip函数使用示例
2015/01/29 Python
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
Python线程创建和终止实例代码
2018/01/20 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
TensorFlow损失函数专题详解
2018/04/26 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
python for 循环获取index索引的方法
2019/02/01 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
linux环境下Django的安装配置详解
2019/07/22 Python
python处理大日志文件
2019/07/23 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
实现向右循环移位
2014/07/31 面试题
Oracle性能调优原则
2012/05/03 面试题
工程专业应届生求职信
2014/02/19 职场文书
师范生求职自荐信
2014/06/14 职场文书