使用gd库实现php服务端图片裁剪和生成缩略图功能分享


Posted in PHP onDecember 25, 2013

裁剪示例:

使用gd库实现php服务端图片裁剪和生成缩略图功能分享

最终裁剪成的图片:

使用gd库实现php服务端图片裁剪和生成缩略图功能分享

其中虚线框内就是要裁剪出来的图片,最终保存成100宽的图片。代码如下:

$src_path = '1.jpg';
//创建源图的实例
$src = imagecreatefromstring(file_get_contents($src_path));
//裁剪开区域左上角的点的坐标
$x = 100;
$y = 12;
//裁剪区域的宽和高
$width = 200;
$height = 200;
//最终保存成图片的宽和高,和源要等比例,否则会变形
$final_width = 100;
$final_height = round($final_width * $height / $width);
//将裁剪区域复制到新图片上,并根据源和目标的宽高进行缩放或者拉升
$new_image = imagecreatetruecolor($final_width, $final_height);
imagecopyresampled($new_image, $src, 0, 0, $x, $y, $final_width, $final_height, $width, $height);
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($new_image);
imagedestroy($src);
imagedestroy($new_image);

其实如果坐标为(0,0),裁剪区域的宽高和源图的宽高一致,那么就是生成缩略图的功能了。

总结

这里只列出了php裁剪图片的示例,属于服务端的功能。如果客户端有需要,推荐一个jquery的插件imageAreaSelect,兼容性非常不错。

PHP 相关文章推荐
很实用的一个完整email发送程序
Oct 09 PHP
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 PHP
php设计模式 FlyWeight (享元模式)
Jun 26 PHP
php站内搜索并高亮显示关键字的实现代码
Dec 29 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
THINKPHP内容分页代码分享
Jan 14 PHP
Laravel路由设定和子路由设定实例分析
Mar 30 PHP
php项目开发中用到的快速排序算法分析
Jun 25 PHP
thinkPHP基于ajax实现的菜单与分页示例
Jul 12 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 #PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 #PHP
php使用strtotime和date函数判断日期是否有效代码分享
Dec 25 #PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 #PHP
linux实现php定时执行cron任务详解
Dec 24 #PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 #PHP
php下载excel无法打开的解决方法
Dec 24 #PHP
You might like
Sublime里直接运行PHP配置方法
2014/11/28 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
几个javascript操作word的参考代码
2009/10/26 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python的时间模块datetime详解
2017/04/17 Python
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
Python装饰器用法实例总结
2018/02/07 Python
Python实现多线程的两种方式分析
2018/08/29 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
Python如何将装饰器定义为类
2020/07/30 Python
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
软件测试有哪些?什么是配置项?
2012/02/12 面试题
高中语文教学反思
2014/01/16 职场文书
会计学专业求职信
2014/07/17 职场文书
校园运动会广播稿
2015/08/19 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
一文搞懂Python Sklearn库使用
2021/08/23 Python
Golang 实现WebSockets
2022/04/24 Golang
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js