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数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 PHP
php中session与cookie的比较
Jan 27 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
PHP中的命名空间详细介绍
Jul 02 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
Aug 23 PHP
PHP实现的进度条效果详解
May 03 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
php基于curl重写file_get_contents函数实例
Nov 08 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
PHP中localeconv()函数的用法
Mar 26 PHP
解决Laravel 不能创建 migration 的问题
Oct 09 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
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
PHP获取网站域名和地址的代码
2008/08/17 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
使用PHP生成PDF方法详解
2015/01/23 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
javascript完美拖拽的实现方法
2013/09/29 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
checkbox勾选判断代码分析
2014/06/11 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
django中的图片验证码功能
2019/09/18 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
荟萃全球保健品:维他购
2018/05/09 全球购物
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
如何写出好的Java代码
2014/04/25 面试题
电子商务个人自荐信
2013/12/12 职场文书
合伙购房协议样本
2014/10/06 职场文书
电子商务实训报告总结
2014/11/05 职场文书
配置Kubernetes外网访问集群
2022/03/31 Servers