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代码的53条建议
Mar 27 PHP
提高PHP编程效率的53个要点(经验小结)
Sep 04 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
Jun 17 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 PHP
php自定义扩展名获取函数示例
Dec 12 PHP
PHP与以太坊交互详解
Aug 24 PHP
php实现构建排除当前元素的乘积数组方法
Oct 06 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 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 pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
PHP 采集获取指定网址的内容
2010/01/05 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
JQuery优缺点分析说明
2011/04/10 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
悬挂训练绳:TRX
2017/12/14 全球购物
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
房屋买卖协议书
2014/04/10 职场文书
2014年环保工作总结
2014/11/26 职场文书
2015年教师节主持词
2015/07/03 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书