利用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 缩略图生成类,支持imagemagick及gd库两种处理

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

asp.net 生成高质量缩略图

using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security...
  • fjyts
  • fjyts
  • 2011-08-01 20:55
  • 536

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

高质量图片缩略图生成(编程笔记)

/// /// 生成缩略图 /// /// 生成的缩略图最大宽度 /// 生成的缩略图最大高度 /// 图片文件流对...

php GD 居中裁剪缩放缩略图生成函数

配合模板引擎按模板需要的大小需求自动创建缩略图(dedecms)function my_image_resize($src_file, $new_width=0 , $new_height=0 ) {...

PHP的GD函数库图形类函数(创建缩略图、给图片加水印、给图片加文字、画布划线)

本笔记主要是关于GD(GRAPHICS DRAW)的函数笔记。这个开放的动态源码在PHP5是被默认安装的,要激活的话还是需要修改PHP.INI文件,去掉相关注释。后面一些例子包括创建缩略图、给图片加水...

C#中基于GDI+(Graphics)图像处理系列之高质量缩略图

简介 动手前先解决两个问题 生成高质量的缩略图 完整示例程序源码 示例程序截图简介生成图片缩略图的功能在Web开发的工作是经常遇到的,比如用户上传一张图片作为用户头像,根据业务的需要生成若干不同尺寸的...

php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码

代码如下: //上传文件类型列表  $uptypes=array(  'image/jpg',  'image/jpeg',  'image/png',  'image/...

GD生成缩略图函数

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

GD库添加图片水印和缩略图

GD库添加图片水印和缩略图
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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