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 相关文章推荐
快速配置PHPMyAdmin方法
Jun 05 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
Feb 09 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
PHP中strtr字符串替换用法详解
Nov 26 PHP
PHP使用mysqldump命令导出数据库
Apr 14 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
php中preg_replace_callback函数简单用法示例
Jul 21 PHP
PHP实现git部署的方法教程
Dec 19 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
PHP children()函数讲解
Feb 03 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
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
Angular实现响应式表单
2017/08/04 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
Python压缩和解压缩zip文件
2015/02/14 Python
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
django 创建过滤器的实例详解
2017/08/14 Python
python实现windows下文件备份脚本
2018/05/27 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
python实现简单成绩录入系统
2019/09/19 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
关于赌博的检讨书
2014/01/08 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
七年级语文教学反思
2016/03/03 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技