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 正则学习实例
Jul 30 PHP
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
PHP获取MySql新增记录ID值的3种方法
Jun 24 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
Nov 21 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
PHP单例模式模拟Java Bean实现方法示例
Dec 07 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 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 读取文件乱码问题
2010/02/20 PHP
php下批量挂马和批量清马代码
2011/02/27 PHP
在项目中寻找代码的坏命名
2012/07/14 PHP
php数组键名技巧小结
2015/02/17 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
Python里隐藏的“禅”
2014/06/16 Python
python之import机制详解
2014/07/03 Python
Python import用法以及与from...import的区别
2015/05/28 Python
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
Python bytes string相互转换过程解析
2020/03/05 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
毕业生个人投资创业计划书
2014/01/04 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers