php图片的裁剪与缩放生成符合需求的缩略图


Posted in PHP onJanuary 11, 2013

图片太大且规格不统一,显示的控制需要靠JavaScript来完成,用在移动设备上时显示效果不好且流量巨大,需要对现有图片库的图片进行一次处理,生成符合移动设备用的缩略图,将原来客户端JS做的工作转移到服务器端用PHP的GD库来集中处理。

图片源与需要的大小

$src_img = "wallpaper.jpg"; 
$dst_w = 300; 
$dst_h = 200;

剪裁图像,保证图像区域最大化显示,并按比例缩放到指定大小。

一开始采用了 imagecopyresized 方法进行图像等比缩小,实际操作后发现,图像缩小后燥点非常严重。后再换用 imagecopyresampled (这里说一下,网上转载这个文章的很多,但是他们都把imagecopyresampled写成了imagecopysampled导致无法使用,所以我才重新贴了这个)方法,该方法会对图像进行重新采样,对缩小的图像进行平滑处理,使清晰度得到很大提高。

<?php 
list($src_w,$src_h)=getimagesize($src_img); // 获取原图尺寸 
$dst_scale = $dst_h/$dst_w; //目标图像长宽比 
$src_scale = $src_h/$src_w; // 原图长宽比 
if($src_scale>=$dst_scale) 
{ 
// 过高 
$w = intval($src_w); 
$h = intval($dst_scale*$w); 
$x = 0; 
$y = ($src_h - $h)/3; 
} 
else 
{ 
// 过宽 
$h = intval($src_h); 
$w = intval($h/$dst_scale); 
$x = ($src_w - $w)/2; 
$y = 0; 
} 
// 剪裁 
$source=imagecreatefromjpeg($src_img); 
$croped=imagecreatetruecolor($w, $h); 
imagecopy($croped,$source,0,0,$x,$y,$src_w,$src_h); 
// 缩放 
$scale = $dst_w/$w; 
$target = imagecreatetruecolor($dst_w, $dst_h); 
$final_w = intval($w*$scale); 
$final_h = intval($h*$scale); 
imagecopyresampled($target,$croped,0,0,0,0,$final_w,$final_h,$w,$h); 
// 保存 
$timestamp = time(); 
imagejpeg($target, "$timestamp.jpg"); 
imagedestroy($target); 
?>

希望大家能用到,还是比较方便的。
PHP 相关文章推荐
php&amp;java(一)
Oct 09 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
php支付宝系列之电脑网站支付
May 30 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 PHP
PHP中上传文件打印错误错误类型分析
Apr 14 PHP
php常用的工具开发整理
Sep 26 PHP
Laravel 实现关系模型取出需要的字段
Oct 10 PHP
Yii 框架入口脚本示例分析
May 19 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 #PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
Jan 11 #PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 #PHP
PHP跨时区(UTC时间)应用解决方案
Jan 11 #PHP
PHP编程函数安全篇
Jan 08 #PHP
php中定时计划任务的实现原理
Jan 08 #PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 #PHP
You might like
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
学习ExtJS border布局
2009/10/08 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
JS定时器实例
2013/04/17 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
js动态添加带圆圈序号列表的实例代码
2021/02/18 Javascript
Python 文件操作实现代码
2009/10/07 Python
Python网站验证码识别
2016/01/25 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
Python读写及备份oracle数据库操作示例
2018/05/17 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
python数据预处理方式 :数据降维
2020/02/24 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
超市后勤自我鉴定
2014/01/17 职场文书
小学科学教学反思
2014/01/26 职场文书
对祖国的寄语大全
2014/04/11 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
单位工作证明
2014/10/07 职场文书
邀请函模板
2015/02/02 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python
Oracle 死锁的检测查询及处理
2021/09/25 Oracle