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 高手之路(三)
Oct 09 PHP
php at(@)符号的用法简介
Jul 11 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
Jan 06 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
PHP实现根据设备类型自动跳转相应页面的方法
Jul 24 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
Apr 07 PHP
php+html5基于websocket实现聊天室的方法
Jul 17 PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
laravel使用Faker数据填充的实现方法
Apr 12 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处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
python如何去除字符串中不想要的字符
2020/07/05 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
flask项目集成swagger的方法
2020/12/09 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
致长跑运动员广播稿
2014/01/31 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
护士2014年终工作总结
2014/11/11 职场文书
2014年合同管理工作总结
2014/12/02 职场文书
企业党建工作总结2015
2015/05/26 职场文书
Linux磁盘管理方法介绍
2022/06/01 Servers