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 相关文章推荐
BBS(php &amp; mysql)完整版(八)
Oct 09 PHP
聊天室php&amp;mysql(一)
Oct 09 PHP
基于php在各种web服务器的运行模式详解
Jun 03 PHP
PHP版 汉字转码的实现详解
Jun 09 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 PHP
php中字符集转换iconv函数使用总结
Oct 11 PHP
在WordPress中使用wp-cron插件来设置定时任务
Dec 10 PHP
PHP中Array相关函数简介
Jul 03 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
laravel框架模型、视图与控制器简单操作示例
Oct 10 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
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
php bootstrap实现简单登录
2016/03/08 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
微信小程序实现跑马灯效果
2020/10/21 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
深入解析Python中的__builtins__内建对象
2016/06/21 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
python递归实现快速排序
2018/08/18 Python
python3 enum模块的应用实例详解
2019/08/12 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
实验教师岗位职责
2014/02/13 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
放飞理想主题班会
2015/08/14 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python