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 接口类与抽象类的实际作用
Nov 26 PHP
php 编写安全的代码时容易犯的错误小结
May 20 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
php array的学习笔记
May 10 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
php实现爬取和分析知乎用户数据
Jan 26 PHP
php中array_column函数简单实现方法
Jul 11 PHP
php json中文编码为null的解决办法
Dec 14 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
Feb 17 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 PHP
CentOS7编译安装php7.1的教程详解
Apr 18 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 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将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
javascript textContent与innerText的异同分析
2010/10/22 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
python实现随机梯度下降法
2020/03/24 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
python3.4爬虫demo
2019/01/22 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
HEMA英国:荷兰原创设计
2018/08/28 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
奉献爱心演讲稿
2014/09/04 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
2014年综合治理工作总结
2014/11/20 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
2014年度个人总结范文
2015/03/09 职场文书
体育委员竞选稿
2015/11/21 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js
Python list列表删除元素的4种方法
2021/11/01 Python