PHP图片处理之使用imagecopyresampled函数实现图片缩放例子


Posted in PHP onNovember 19, 2014

网站优化不能只定在代码上,内容也是网站最需要优化的对象之一,而图像又是网站中最主要的内容。图像的优化最需要处理的就是将所有上传到网站中的大图片自动缩放称小图(在网页中大小够用就行),以减少N倍的存储空间,并提高下载浏览的速度。所以图片缩放成一个动态网站必须要处理的任务,经常和文件上传绑定在一起工作,能在上传图片的同时就调整其大小。当然有时也需要单独处理图片缩放,例如在做图片列表时,如果直接用大图而在显示时才将其缩放成小图,这样做不仅下载速度会变慢,也会降低页面响应时间。通常遇到这样的应用都是在上传图片时,再为图片缩放出一个专门用来做列表的小图标,当单击这个小图标时,才会去下载大图浏览。

使用GD库处理图片缩放,通常使用imagecopyresized()和imagecopyresampled()两个函数中的一个,而使用imagecopyresampled()函数处理后质量会更好一些。这里只介绍一下imagecopyresampled()函数的使用方法。该函数的原型如下所示:

bool imagecopyresampled(resource dst_image,resource src_image,int dst_x,int dst_y,int src_x,int src_y,int dst_w,int dst_h ,int src_w,int src_h)

该函数将一幅图像中的正方形区域复制到另一个图像中,平滑地插入像素值,因此减小了图像的大小而仍然保持了极高的清晰度。如果成功,则返回TRUE,失败则返回FALSE。参数dst_image和src_image分别是目标图像和源图像的标识符。如果源和目标的宽度和高度不同,则会进行相应的图像收缩和拉伸,坐标指的是左上角。本函数可用来在同一幅图内部复制(如果dst_image和src_image相同的话)但如果区域交迭,则结果不可预知。在下面的示例中,以JPEG图片格式为例,编写一个图像缩放的函数thumb(),代码如下所示:

<?php

    //用于对图片进行缩放

    function thumb($filename,$width=200,$height=200){

        //获取原图像$filename的宽度$width_orig和高度$height_orig

        list($width_orig,$height_orig) = getimagesize($filename);

        //根据参数$width和$height值,换算出等比例缩放的高度和宽度

        if ($width && ($width_orig<$height_orig)){

            $width = ($height/$height_orig)*$width_orig;

        }else{

            $height = ($width / $width_orig)*$height_orig;

        }

 

        //将原图缩放到这个新创建的图片资源中

        $image_p = imagecreatetruecolor($width, $height);

        //获取原图的图像资源

        $image = imagecreatefromjpeg($filename);

 

        //使用imagecopyresampled()函数进行缩放设置

        imagecopyresampled($image_p,$image,0,0,0,0,$width,$height,$width_orig,$height_orig);

 

        //将缩放后的图片$image_p保存,100(质量最佳,文件最大)

        imagejpeg($image_p,$filename);

 

        imagedestroy($image_p);

        imagedestroy($image);

    }

 

    thumb("brophp.jpg",100,100);

?>
PHP 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
谈谈PHP语法(3)
Oct 09 PHP
一个改进的UBB类
Oct 09 PHP
PHP-MySQL教程归纳总结
Jun 07 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
Jul 13 PHP
php+iframe实现隐藏无刷新上传文件
Feb 10 PHP
php使用多个进程同时控制文件读写示例
Feb 28 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 PHP
php使用cookie保存登录用户名的方法
Jan 26 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
Jan 12 PHP
PHP文件操作实例总结
Sep 27 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 #PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 #PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 #PHP
php图片处理函数获取类型及扩展名实例
Nov 19 #PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 #PHP
基于递归实现的php树形菜单代码
Nov 19 #PHP
php常用的url处理函数总结
Nov 19 #PHP
You might like
php中的一个中文字符串截取函数
2007/02/14 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
Opacity.js
2007/01/22 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
js闭包实例汇总
2014/11/09 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
python计算N天之后日期的方法
2015/03/31 Python
python中assert用法实例分析
2015/04/30 Python
Python中的多行注释文档编写风格汇总
2016/06/16 Python
python如何实现反向迭代
2018/03/20 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
Exception类的常用方法
2012/06/16 面试题
违反学校规定检讨书
2014/01/18 职场文书
运动会解说词100字
2014/01/31 职场文书
入学生会自荐书范文
2014/02/05 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
建设工程授权委托书
2014/09/22 职场文书
写给老师的感谢信
2015/01/20 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书