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之Smarty入门
Jan 04 PHP
利用discuz实现PHP大文件上传应用实例代码
Nov 14 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
php array的学习笔记
May 16 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
Oct 03 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
PHP连接SQLServer2005的方法
Jan 27 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 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 checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
PHP反向代理类代码
2014/08/15 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python连接phoenix的方法示例
2017/09/29 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
python3实现基于用户的协同过滤
2018/05/31 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
python和c语言的主要区别总结
2019/07/07 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
Weblogic和WebSphere不同特点
2012/05/09 面试题
2014年小学图书室工作总结
2014/12/09 职场文书
党员检讨书范文
2014/12/27 职场文书
助学金感谢信
2015/01/20 职场文书
开天辟地观后感
2015/06/09 职场文书
小学语文教师研修日志
2015/11/13 职场文书
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android