当前位置 : 主页 > 网络编程 > PHP >

图片类 支持GD和Imagick,gif动画类型

来源:互联网 收集:自由互联 发布时间:2021-06-30
1. [文件] Image.class.php~6KB 下载 (16) ?phpnamespace YBL;class Image{ /* 驱动相关常量定义 */ const IMAGE_GD = 0; //常量,标识GD库类型 const IMAGE_IMAGICK = 1; //常量,标识imagick库类型 /* 缩略图相关常量定义

1. [文件] Image.class.php ~ 6KB     下载(16)    

<?php
namespace YBL;
class Image{
    /* 驱动相关常量定义 */
    const IMAGE_GD              =   0; //常量,标识GD库类型
    const IMAGE_IMAGICK         =   1; //常量,标识imagick库类型

    /* 缩略图相关常量定义 */
    const IMAGE_THUMB_SCALE     =   0 ; //常量,标识缩略图等比例缩放类型
    const IMAGE_THUMB_FILLED    =   1 ; //常量,标识缩略图缩放后填充类型
    const IMAGE_THUMB_CENTER    =   2 ; //常量,标识缩略图居中裁剪类型
    const IMAGE_THUMB_NORTHWEST =   3 ; //常量,标识缩略图左上角裁剪类型
    const IMAGE_THUMB_SOUTHEAST =   4 ; //常量,标识缩略图右下角裁剪类型
    const IMAGE_THUMB_FIXED     =   5 ; //常量,标识缩略图固定尺寸缩放类型

    /* 水印相关常量定义 */ 
	const IMAGE_WATER_CENTER    =   0 ; //常量,标识居中水印
    const IMAGE_WATER_NORTHWEST =   1 ; //常量,标识左上角水印
    const IMAGE_WATER_NORTH     =   2 ; //常量,标识上居中水印
    const IMAGE_WATER_NORTHEAST =   3 ; //常量,标识右上角水印
    const IMAGE_WATER_EAST      =   4 ; //常量,标识右居中水印
    const IMAGE_WATER_SOUTHEAST =   5 ; //常量,标识右下角水印	
    const IMAGE_WATER_SOUTH     =   6 ; //常量,标识下居中水印	
    const IMAGE_WATER_SOUTHWEST =   7 ; //常量,标识左下角水印
    const IMAGE_WATER_WEST      =   8 ; //常量,标识左居中水印


    /**
     * 图片资源
     * @var resource
     */
    private $img;

    /**
     * 构造方法,用于实例化一个图片处理对象
     * @param string $type 要使用的类库,默认使用GD库
     */
    public function __construct($gif_proess=false,$type = self::IMAGE_GD){
        /* 判断调用库的类型 */
        switch ($type) {
            case self::IMAGE_GD:
                $class = 'Gd';
                break;
            case self::IMAGE_IMAGICK:
                $class ='Imagick';
                break;
            default:
                exit('不支持的图片处理库类型');
        }

        /* 引入处理库,实例化图片处理对象 */
		include_once($class.'.class.php');
		$class = __NAMESPACE__.'\\'.$class;
        $this->img = new $class($gif_proess);

    }

    /**
     * 打开一幅图像
     * @param  string $imgname 图片路径
     * @return Object          当前图片处理库对象
     */
    public function open($imgname){
        $this->img->open($imgname);
        return $this;
    }

    /**
     * 保存图片
     * @param  string  $imgname   图片保存名称
     * @param  string  $type      图片类型
     * @param  integer $quality   图像质量      
     * @param  boolean $interlace 是否对JPEG类型图片设置隔行扫描
     * @return Object             当前图片处理库对象
     */
    public function save($imgname, $type = null, $quality=80,$interlace = true){
        $this->img->save($imgname, $type, $quality,$interlace);
        return $this;
    }

    /**
     * 返回图片宽度
     * @return integer 图片宽度
     */
    public function width(){
        return $this->img->width();
    }

    /**
     * 返回图片高度
     * @return integer 图片高度
     */
    public function height(){
        return $this->img->height();
    }

    /**
     * 返回图像类型
     * @return string 图片类型
     */
    public function type(){
        return $this->img->type();
    }

    /**
     * 返回图像MIME类型
     * @return string 图像MIME类型
     */
    public function mime(){
        return $this->img->mime();
    }

    /**
     * 返回图像尺寸数组 0 - 图片宽度,1 - 图片高度
     * @return array 图片尺寸
     */
    public function size(){
        return $this->img->size();
    }

    /**
     * 裁剪图片
     * @param  integer $w      裁剪区域宽度
     * @param  integer $h      裁剪区域高度
     * @param  integer $x      裁剪区域x坐标
     * @param  integer $y      裁剪区域y坐标
     * @param  integer $width  图片保存宽度
     * @param  integer $height 图片保存高度
     * @return Object          当前图片处理库对象
     */
    public function crop($w, $h, $x = 0, $y = 0, $width = null, $height = null){
        $this->img->crop($w, $h, $x, $y, $width, $height);
        return $this;
    }

    /**
     * 生成缩略图
     * @param  integer $width  缩略图最大宽度
     * @param  integer $height 缩略图最大高度
     * @param  integer $type   缩略图裁剪类型
     * @return Object          当前图片处理库对象
     */
    public function thumb($width, $height, $type = self::IMAGE_THUMB_SCALE){
        $this->img->thumb($width, $height, $type);
        return $this;
    }

    /**
     * 添加水印
     * @param  string  $source 水印图片路径
     * @param  integer $locate 水印位置
     * @param  integer $alpha  水印透明度
     * @return Object          当前图片处理库对象
     */
    public function water($source, $locate = self::IMAGE_WATER_SOUTHEAST,$alpha=80){
        $this->img->water($source, $locate,$alpha);
        return $this;
    }

    /**
     * 图像添加文字
     * @param  string  $text   添加的文字
     * @param  string  $font   字体路径
     * @param  integer $size   字号
     * @param  string  $color  文字颜色
     * @param  integer $locate 文字写入位置
     * @param  integer $offset 文字相对当前位置的偏移量
     * @param  integer $angle  文字倾斜角度
     * @return Object          当前图片处理库对象
     */
    public function text($text, $font, $size, $color = '#00000000',$locate = self::IMAGE_WATER_SOUTHEAST, $offset = 0, $angle = 0){
        $this->img->text($text, $font, $size, $color, $locate, $offset, $angle);
        return $this;
    }
}

2. [文件] Gd.class.php ~ 32KB     下载(25)    

3. [文件] Imagick.class.php ~ 19KB     下载(30)    

4. [文件] image.php ~ 2KB     下载(18)    

<?php
namespace YBL;
set_time_limit(0);
require_once('../lib/image/Image.class.php');
$source='image/ybl.gif';
$image=new image(1);
//========================================================================
//打开一幅图像
$image->open($source);
echo '图片宽度:'.$image->width(),'<br/>';
echo '图片高度:'.$image->height(),'<br/>';
echo '图片类型:'.$image->type(),'<br/>';
echo '图像MIME类型:'.$image->mime(),'<br/>';
$size=$image->size();
echo '图片宽度:'.$size[0],'<br/>';
echo '图片高度:'.$size[1],'<br/>';
$savename='image/save.gif';
//保存图片
//参数 图片保存地址,图片类型,图像质量,是否对JPEG类型图片设置隔行扫描
 $image->save($savename);
$wh=2;
//======================================================================
//生成缩略图
//参数 缩略图最大宽度,缩略图最大高度,缩略图裁剪类型
$image->thumb($size[0]*$wh,$size[1]*$wh,5);
$savename='image/thumb.gif';
$image->save($savename);
//=================================================================================
//图像添加文字
$text='你好!!!文字';
//字体类型
$fonturl='image/simhei.ttf';
//字体大小
$fontsize='20';
//字体颜色
$fontcolor='#FFF';
//字体倾斜度
$fontxdu=20;
//参数 添加的文字,字体路径,字号,文字颜色,文字写入位置,文字相对当前位置的偏移量,文字倾斜角度
$image->text($text,$fonturl,$fontsize,$fontcolor,array(100,100),0,$fontxdu);
$savename='image/text.gif';
$image->save($savename);
//=================================================================================
//打水印
$alpha=80;
$water='image/water.png';
//数组表示 水印位置 
//数字 水印位置类型
$xy=array(120,20);
//参数  水印图片路径,水印位置,水印透明度
$image->water($water,$xy,$alpha);
$savename='image/water_aim.gif';
$image->save($savename);
//=================================================================================
//裁剪图像
//参数  裁剪区域宽度,裁剪区域高度,裁剪区域x坐标,裁剪区域y坐标,图片保存宽度,图片保存高度
$image->crop(100,100,100,100);
$savename='image/crop.gif';
$image->save($savename);


网友评论