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 和 XML: 使用expat函数(三)
Oct 09 PHP
PHP配置心得包含MYSQL5乱码解决
Nov 20 PHP
允许phpmyadmin空密码登录的配置方法
May 29 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
PHP数据过滤的方法
Oct 30 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 PHP
yii操作session实例简介
Jul 31 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
Apache启动报错No space left on device: AH00023该怎么解决
Oct 16 PHP
php生成gif动画的方法
Nov 05 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
php实现微信公众号创建自定义菜单功能的实例代码
Jun 11 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出错界面
2006/10/09 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
谈谈JS中的!!
2017/12/07 Javascript
vue项目引入字体.ttf的方法
2018/09/28 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
理解Python中的With语句
2015/02/02 Python
Python实现DDos攻击实例详解
2019/02/02 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
numpy数组广播的机制
2019/07/12 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
python用700行代码实现http客户端
2021/01/14 Python
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
高校毕业生自我鉴定
2013/10/27 职场文书
运动会广播稿400字
2014/01/25 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
给学校的建议书范文
2014/05/15 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
欢迎横幅标语
2014/06/17 职场文书
婚宴致辞
2015/07/28 职场文书
浅析Django接口版本控制
2021/06/26 Python
Python中的 Set 与 dict
2022/03/13 Python
ipad隐藏软件app图标方法
2022/04/19 数码科技