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 相关文章推荐
建站常用13种PHP开源CMS比较
Aug 23 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
php array_walk() 数组函数
Jul 12 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
基于php设计模式中单例模式的应用分析
May 15 PHP
thinkphp的c方法使用示例
Feb 24 PHP
php foreach正序倒序输出示例代码
Jul 01 PHP
php+mysql实现无限分类实例详解
Jan 15 PHP
PHP构造二叉树算法示例
Jun 21 PHP
详细解读php的命名空间(二)
Feb 21 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 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
给多个地址发邮件的类
2006/10/09 PHP
php支持中文字符串分割的函数
2015/05/28 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
PHP实现计算器小功能
2020/08/28 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
新闻内页-JS分页
2006/06/07 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
JavaScript如何自定义trim方法
2015/07/28 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
浅析Python中的join()方法的使用
2015/05/19 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
用opencv给图片换背景色的示例代码
2020/07/08 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
药品质量检测应届生求职信
2013/11/14 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
护士实习自荐信
2015/03/06 职场文书
工作态度不好检讨书
2015/05/06 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
使用Redis做预定库存缓存功能
2022/04/02 Redis