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

yipeiwu_com5年前PHP代码库

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

相关文章

分享最受欢迎的5款PHP框架

分享最受欢迎的5款PHP框架

1. CodeIgniter Framework   CodeIgniter 是目前使用最广泛的 PHP 框架。CodeIgniter 是一个简单快速的PHP MVC 框架。...

PHP 危险函数解释 分析

可在编译时使用 –disable-cli。一旦编译生成 CLI 模式的 PHP,则可能会被入侵者 利用该程序建立一个 WEB Shell 后门进程或通过 PHP 执行任意代码! phpi...

深入理解PHP中的Streams工具

Streams 是PHP提供的一个强有力的工具,我们常常在不经意会使用到它,如果善加利用将大大提高PHP的生产力。 驾驭Streams的强大力量后,应用程序将提升到一个新的高度。 下面是...

php excel类 phpExcel使用方法介绍

下载地址:http://www.codeplex.com/PHPExcel   下面是总结的几个使用方法   include ‘PHPExcel.php';   include ‘PHP...

PHP随机数函数rand()与mt_rand()的讲解

PHP中rand()与mt_rand()都是用于产生一个指定范围内单独随机数的函数既然他们都是用于产生一个随机数,那么他们有什么区别呢?rand() 函数默认使用 libc 随机数发生器,...