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 相关文章推荐
基于文本的搜索
Oct 09 PHP
PHP新手上路(三)
Oct 09 PHP
PHP 模板高级篇总结
Dec 21 PHP
PHP写MySQL数据 实现代码
Jun 15 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
php trim 去除空字符的定义与语法介绍
May 31 PHP
浅析51个PHP处理字符串的函数
Aug 02 PHP
php中unserialize返回false的解决方法
Sep 22 PHP
PHP简单实现无限级分类的方法
May 13 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 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
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
php使用GeoIP库实例
2014/06/27 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
php生成html文件方法总结
2014/12/01 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
javascript 关闭IE6、IE7
2009/06/01 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
Python中垃圾回收和del语句详解
2018/11/15 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
购买一个高级域名:BuyDomains
2018/03/11 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
在求职信中如何凸显个人优势
2013/10/30 职场文书
中专毕业生自我鉴定
2013/11/21 职场文书
集体备课反思
2014/02/12 职场文书
电子专业求职信
2014/06/19 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
小鞋子观后感
2015/06/05 职场文书
python 下载文件的几种方式分享
2021/04/07 Python
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python