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 相关文章推荐
php 全文搜索和替换的实现代码
Jul 29 PHP
利用PHP制作简单的内容采集器的原理分析
Oct 01 PHP
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
php file_get_contents函数轻松采集html数据
Apr 22 PHP
PHP学习之整理字符串
Apr 17 PHP
php 定界符格式引起的错误
May 24 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
php中sql注入漏洞示例 sql注入漏洞修复
Jan 24 PHP
PHP如何将log信息写入服务器中的log文件
Jul 29 PHP
php 数组随机取值的简单实例
May 23 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
PHP单例模式定义与使用实例详解
Feb 06 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网页病毒清除类
2014/12/08 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
PHP解析RSS的方法
2015/03/05 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
js GridView 实现自动计算操作代码
2009/03/25 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
Vue.js实现价格计算器功能
2020/03/30 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
python计算最小优先级队列代码分享
2013/12/18 Python
Python函数嵌套实例
2014/09/23 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
Python 查看文件的读写权限方法
2018/01/23 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
python多线程同步实例教程
2019/08/11 Python
小学教师自我鉴定
2013/11/07 职场文书
自荐信格式
2013/12/01 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
根叔历年演讲稿
2014/05/20 职场文书
个人向公司借款协议书
2014/10/09 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
小学推普周活动总结
2015/05/07 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python