利用PHP的GD库生成高质量的缩略图

转载 2006年06月02日 10:13:00

class resizeimage
{
    //图片类型
    var $type;
    //实际宽度
    var $width;
    //实际高度
    var $height;
    //改变后的宽度
    var $resize_width;
    //改变后的高度
    var $resize_height;
    //是否裁图
    var $cut;
    //源图象
    var $srcimg;
    //目标图象地址
    var $dstimg;
    //临????建的图象
    var $im;

    function resizeimage($img, $wid, $hei,$c)
    {
        $this->srcimg = $img;
        $this->resize_width = $wid;
        $this->resize_height = $hei;
        $this->cut = $c;
        //图片的类型
        $this->type = substr(strrchr($this->srcimg,"."),1);
        //初始化图象
        $this->initi_img();
        //目标图象地址
        $this -> dst_img();
        //--
        $this->width = imagesx($this->im);
        $this->height = imagesy($this->im);
        //生成图象
        $this->newimg();
        ImageDestroy ($this->im);
    }
    function newimg()
    {
        //改变后的图象的比例
        $resize_ratio = ($this->resize_width)/($this->resize_height);
        //实际图象的比例
        $ratio = ($this->width)/($this->height);
        if(($this->cut)=="1")
        //裁图
        {
            if($ratio>=$resize_ratio)
            //高度优先
            {
                $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);
                imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,$this->resize_height, (($this->height)*$resize_ratio), $this->height);
                ImageJpeg ($newimg,$this->dstimg);
            }
            if($ratio<$resize_ratio)
            //宽度优先
            {
                $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);
                imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, $this->resize_height, $this->width, (($this->width)/$resize_ratio));
                ImageJpeg ($newimg,$this->dstimg);
            }
        }
        else
        //不裁图
        {
            if($ratio>=$resize_ratio)
            {
                $newimg = imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio);
                imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, ($this->resize_width)/$ratio, $this->width, $this->height);
                ImageJpeg ($newimg,$this->dstimg);
            }
            if($ratio<$resize_ratio)
            {
                $newimg = imagecreatetruecolor(($this->resize_height)*$ratio,$this->resize_height);
                imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, ($this->resize_height)*$ratio, $this->resize_height, $this->width, $this->height);
                ImageJpeg ($newimg,$this->dstimg);
            }
        }
    }
    //初始化图象
    function initi_img()
    {
        if($this->type=="jpg")
        {
            $this->im = imagecreatefromjpeg($this->srcimg);
        }
        if($this->type=="gif")
        {
            $this->im = imagecreatefromgif($this->srcimg);
        }
        if($this->type=="png")
        {
            $this->im = imagecreatefrompng($this->srcimg);
        }
    }
    //图象目标地址
    function dst_img()
    {
        $full_length  = strlen($this->srcimg);
        $type_length  = strlen($this->type);
        $name_length  = $full_length-$type_length;
        $name         = substr($this->srcimg,0,$name_length-1);
        $this->dstimg = $name."_small.".$this->type;
    }
}
$resizeimage = new resizeimage("test.jpg", "200", "200", "0");

<table width="200" height="200" cellspacing="0" cellpadding="0" border="0">
    <tr>
        <td bgcolor="#000000" align="center" valign="middle"><a href="test.jpg" target="_blank"><img src="test_small.jpg" border="0"></a><td>
    </tr>
</table>

PHP利用GD库画图和生成验证码图片

首先得确定php.ini设置有没有打开GD扩展功能,测试如下 print_r(gd_info()); 如果有打印出内容如下,则说明GD功能有打开: Array ( [GD Version] =...
  • wyz365889
  • wyz365889
  • 2015年03月13日 22:33
  • 2245

php 缩略图生成类,支持imagemagick及gd库两种处理

功能: 1.按比例缩小/放大 2.填充背景色 3.按区域裁剪 4.添加水印,包括水印的位置,透明度等 使用imagemagick实现,imagemagick地址:www.imagemagick.or...
  • fdipzone
  • fdipzone
  • 2013年07月13日 01:45
  • 25938

php使用GD库生成验证码

目录 绘图步骤 绘制验证码步骤 代码演示 绘图步骤: 1.创建画布,分配颜色,使用以下两个函数(可以在php手册GD库函数中找到): imagecreatetruecolor() imag...
  • tracy_n
  • tracy_n
  • 2017年01月03日 17:53
  • 741

使用PHP生成二维码的两种方法(带logo图像)

随着科技的进步,二维码应用领域越来越广泛,今天我给大家分享下如何使用PHP生成二维码,以及如何生成中间带LOGO图像的二维码 使用PHP QR Code生成二维码 HP QR Code是一个PHP二维...
  • chaishen10000
  • chaishen10000
  • 2016年11月21日 21:12
  • 996

用GD库做图片缩略图

  • json_ligege
  • json_ligege
  • 2016年12月02日 11:52
  • 385

利用PHP GD库生成位图

位图图像(bitmap) php-gd PHP位图生成
  • Lockey23
  • Lockey23
  • 2017年08月20日 22:33
  • 307

【PHP】GD库笔记 初探GD库的坐标

昨天在用GD库的imagettftext在图片上写字的时候,发现写字的坐标并不是很精确的按照指定的参数的位置插入字体的,一直觉得很诡异。由于GD库中很多画图操作都是以坐标为基础的,因而就花了点时间了解...
  • ohmygirl
  • ohmygirl
  • 2013年12月27日 21:50
  • 3864

GD生成缩略图函数

根据传入的宽高,先根据值大的缩放图片(根据宽或者高等比缩放),再截取图片,不足部分,留白显示,这样就保证了图片不会因为缩放而变形,特别是针对长方形的图片 createThumbGD('t.jpg',...
  • jam00
  • jam00
  • 2015年11月16日 14:32
  • 281

转:用Imagick替代php的GD库-强大~

一般用php处理图片都是使用GD库或者GD2的函数库,一般编译php环境都会搭上GD库,大多数开源程序也是用GD来处理图片的,但是它只能现实诸如调整大小、增加水印等基础功能,要想用GD来做复杂图形是非...
  • xcl_rockman
  • xcl_rockman
  • 2017年06月12日 17:09
  • 869

PHP动态安装所需要的扩展库之GD库

extension_dir = "/usr/local/php/ext/" 1、首先第一步要做的是进入PHP安装时候的源码包(注意,这里指的不是你安装的路径,而是安装包) 2、进入ext目录如下图: ...
  • u013032788
  • u013032788
  • 2015年07月02日 17:20
  • 1572
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用PHP的GD库生成高质量的缩略图
举报原因:
原因补充:

(最多只允许输入30个字)