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 相关文章推荐
一个odbc连mssql分页的类
Oct 09 PHP
PHP 存取 MySQL 数据库的一个例子
Oct 09 PHP
php 生成WML页面方法详解
Aug 09 PHP
PHP执行linux系统命令的常用函数使用说明
Apr 27 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
php数组去重实例及分析
Nov 26 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 PHP
PHP实现文字写入图片功能
Feb 18 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 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
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
php防盗链的常用方法小结
2010/07/02 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
PHP生成随机密码类分享
2014/06/25 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
js时间控件只显示年月
2017/01/08 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
js实现分页功能
2017/05/24 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
英国团购网站:Groupon英国
2017/11/28 全球购物
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
金融与证券专业求职信
2014/06/22 职场文书
小学生安全保证书
2015/05/09 职场文书
党员反四风学习心得体会
2016/01/22 职场文书