PHP图片处理之使用imagecopyresampled函数实现图片缩放例子

 更新时间:2014年11月19日 09:47:31   投稿:junjie  
这篇文章主要介绍了PHP图片处理之使用imagecopyresampled函数实现图片缩放例子,本文先是讲解了imagecopyresampled函数的相关知识,然后给出了实现代码例子,需要的朋友可以参考下

网站优化不能只定在代码上,内容也是网站最需要优化的对象之一,而图像又是网站中最主要的内容。图像的优化最需要处理的就是将所有上传到网站中的大图片自动缩放称小图(在网页中大小够用就行),以减少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设计模式之原型模式示例详解

    这篇文章主要给大家介绍了关于PHP设计模式之原型模式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • php中关于hook钩子函数底层理解

    php中关于hook钩子函数底层理解

    对"钩子"这个概念其实不熟悉,最近看到一个php框架中用到这种机制来扩展项目,所以大概来了解下。 所谓Hook机制,是从Windows编程中流行开的一种技术
    2023-01-01
  • PHP防CC攻击实现代码

    PHP防CC攻击实现代码

    所谓的CC攻击就是对方利用程序或一些代理对您的网站进行不间断的访问,造成您的网站处理不了而处于当机状态
    2011-12-12
  • PHP Memcached应用实现代码

    PHP Memcached应用实现代码

    在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东。这里简单介绍一下,memcached 是高效、快速的分布式内存对象缓存系统,主要用于加速 WEB 动态应用程序。
    2010-02-02
  • 启用Csrf后POST数据时出现的400错误

    启用Csrf后POST数据时出现的400错误

    这篇文章主要介绍了启用Csrf后POST数据时出现的400错误的相关资料,需要的朋友可以参考下
    2015-07-07
  • PHP判断网络文件是否存在的方法

    PHP判断网络文件是否存在的方法

    这篇文章主要介绍了PHP判断网络文件是否存在的方法,实例分析了php读取网络文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • php采集时被封ip的解决方法

    php采集时被封ip的解决方法

    最近各种网站的采集程序写的比较多,遇到在采某网站时采到100多条时突然发现对方的网站打不开了,猜到肯定被封ip了,用了代理还是会封,这不是办法。
    2010-08-08
  • PHP中时间处理类Carbon的用法详解

    PHP中时间处理类Carbon的用法详解

    Carbon 是php的日期处理类库(A simple PHP API extension for DateTime.),继承了PHP的 Datetime 类。本文将详细讲解一下该类的使用,需要的可以参考一下
    2022-05-05
  • Pear DB 新手入门指南教程

    Pear DB 新手入门指南教程

    通过 Pear DB可以从查询结果获得更多有用的数据信息 。这些方法有: numRows(): 通过一个"SELECT" 查询返回所有数据的数量。
    2008-11-11
  • Fine Uploader文件上传组件应用介绍

    Fine Uploader文件上传组件应用介绍

    考虑到对浏览器适配上采用Fine Uploader. Fine Uploader 采用ajax方式实现对文件上传有需要的朋友可以参考下
    2013-01-01

最新评论