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,不用COM,生成excel文件
Oct 09 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
May 16 PHP
浅析php header 跳转
Jun 17 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
Aug 18 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
php和nginx交互实例讲解
Sep 24 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反射API示例分享
2016/10/08 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
详谈javascript异步编程
2016/02/21 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
Python笔记之facade模式
2019/11/20 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
保荐人的岗位职责
2013/11/19 职场文书
庆国庆活动总结
2014/08/28 职场文书
军训个人总结
2015/03/03 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
工资证明范本
2015/06/12 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL