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将向Java靠拢
Oct 09 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
深入理解PHP中的Session和Cookie
Jun 21 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
May 10 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
PHP的pcntl多进程用法实例
Mar 19 PHP
深入探究PHP的多进程编程方法
Aug 18 PHP
PHP异常处理Exception类
Dec 11 PHP
php 中的closure用法详解
Jun 12 PHP
php微信开发之关键词回复功能
Jun 13 PHP
php实现等比例压缩图片
Jul 26 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
php自动给文章加关键词链接的函数代码
2012/11/29 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
学习ExtJS accordion布局
2009/10/08 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
js面向对象的写法
2016/02/19 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
面向对象编程的优势是什么
2015/12/17 面试题
秘书专业自荐信范文
2013/12/26 职场文书
迟到早退检讨书
2014/02/10 职场文书
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技