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中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
Feb 19 PHP
关于PHP实现异步操作的研究
Feb 03 PHP
解析php安全性问题中的:Null 字符问题
Jun 21 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
PHP getName()函数讲解
Feb 03 PHP
PHP实用小技巧之调用录像的方法
Dec 05 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 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持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
PHP中phar包的使用教程
2017/06/14 PHP
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
jQuery动画与特效详解
2015/02/01 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
python中requests小技巧
2017/05/10 Python
Python实现学生成绩管理系统
2020/04/05 Python
python Celery定时任务的示例
2018/03/13 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
大专生自荐信
2013/10/04 职场文书
药学专业大专生的自我评价
2013/12/12 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
小平您好观后感
2015/06/09 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
ipad隐藏软件app图标方法
2022/04/19 数码科技