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 相关文章推荐
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
使用PHP数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
使用php来实现网络服务
Sep 15 PHP
PHP数组内存耗用太多问题的解决方法
Apr 05 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
php选择排序法实现数组排序实例分析
Feb 16 PHP
Yii框架上传图片用法总结
Mar 28 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 PHP
PHP堆栈调试操作简单示例
Jun 15 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
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
三分钟带你玩转jQuery.noConflict()
2016/02/15 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
Python爬虫使用脚本登录Github并查看信息
2018/07/16 Python
python3安装speech语音模块的方法
2018/12/24 Python
人工神经网络算法知识点总结
2019/06/11 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
应用电子技术专业个人求职信
2013/09/21 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
海飞丝的广告词
2014/03/20 职场文书
应聘英语教师求职信
2014/04/24 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS