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笔记之:php数组相关函数的使用
Apr 26 PHP
基于xcache的配置与使用详解
Jun 18 PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 PHP
php ZipArchive压缩函数详解实例
Nov 06 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
PHP魔术方法__GET、__SET使用实例
Nov 25 PHP
百万级别知乎用户数据抓取与分析之PHP开发
Sep 28 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
谈谈PHP连接Access数据库的注意事项
Aug 12 PHP
php微信公众平台示例代码分析(二)
Dec 06 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
PHP实现文件上传操作和封装
Mar 04 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
简单采集了yahoo的一些数据
2007/02/14 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
2016/09/22 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
详谈js原型继承的一些问题
2017/09/06 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
对python中的iter()函数与next()函数详解
2018/10/18 Python
python mac下安装虚拟环境的图文教程
2019/04/12 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
使用python实现飞机大战游戏
2020/03/23 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
电子专业毕业生自我鉴定
2014/01/22 职场文书
初二生物教学反思
2014/02/03 职场文书
捐款仪式主持词
2015/07/04 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
Redis keys命令的具体使用
2022/06/05 Redis
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript