当前位置: 首页 > 图文教程 > 网络编程 > PHP > php可以生成缩略图和水印图的类

PHP
PHP memcache扩展的三种安装方法
PHP 判断常量,变量和函数是否存在
PHP session有效期问题
PHP 读取文件的正确方法
apache2.2.4+mysql5.0.77+php5.2.8安装精简
PHP 字符串编码截取函数(兼容utf-8和gb2312)
PHP 错误之引号中使用变量
php 购物车的例子
PHP 身份证号验证函数
php结合飞信 免费天气预报短信
PHP SQLite类
PHP 在线翻译函数代码
PHPMyAdmin 快速配置方法
PHP 编写的 25个游戏脚本
php 购物车实例(申精)
PHP获取当前文件所在目录 getcwd()函数
DISCUZ 论坛管理员密码忘记的解决方法
PHP 采集心得技巧
抓取YAHOO股票报价的类
PHP 模拟登陆MSN并获得用户信息

PHP 中的 php可以生成缩略图和水印图的类


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 342 ::
收藏到网摘: n/a

用法:

(1)改变图片大小


(2)添加水印

 

以下为引用的内容:

  require_once('image.php');
  $img = new Image('pic.jpg');
  $img->addWatermark('logo.jpg', 50);//添加水印,第一个参数是水印的图片地址,第二个参数是透明值
  $img->create();
  $img->

类的代码:

以下为引用的内容:

<?php
class Image {
    var $imageResource = NULL;
    var $target = NULL;
    var $enableTypes = array();
    var $imageInfo = array();
    var $createFunc = '';
    var $imageType = NULL;
   
    /**
     * Construct for this class
     *
     * @param string $image
     * @return Image
     */
    function Image($image = NULL) {
        //get enables
        if(imagetypes() & IMG_GIF) {
            $this->enableTypes[] = 'image/gif';
        }
        if(imagetypes() & IMG_JPEG) {
            $this->enableTypes[] = 'image/jpeg';
        }
        if (imagetypes() & IMG_JPG) {
            $this->enableTypes[] = 'image/jpg';
        }
        if(imagetypes() & IMG_PNG) {
            $this->enableTypes[] = 'image/png';
        }
        //end get
       
        if($image != NULL) {
            $this->setImage($image);
        }
    }
   
    /**
     * set a image resource
     *
     * @param string $image
     * @return boolean
     */
    function setImage($image) {
        if(file_exists($image) && is_file($image)) {
            $this->imageInfo = getimagesize($image);
            $img_mime = strtolower($this->imageInfo['mime']);
            if(!in_array($img_mime, $this->enableTypes)) {
                exit('系统不能操作这种图片类型.');
            }
            switch ($img_mime) {
                case 'image/gif':
                    $link = imagecreatefromgif($image);
                    $this->createFunc = 'imagegif';
                    $this->imageType = 'gif';
                    break;
                case 'image/jpeg':
                case 'image/jpg':
                    $link = imagecreatefromjpeg($image);
                    $this->createFunc = 'imagejpeg';
                    $this->imageType = 'jpeg';
                    break;
                case 'image/png':
                    $link = imagecreatefrompng($image);
                    $this->createFunc = 'imagepng';
                    $this->imageType = 'png';
                    break;
                default:
                    $link = 'unknow';
                    $this->imageType = 'unknow';
                    break;
            }
            if($link !== 'unknow') {
                $this->imageResource = $link;
            } else {
                exit('这种图片类型不能改变尺寸.');
            }
            unset($link);
            return true;
        } else {
            return false;
        }
    }
   
    /**
     * set header
     *
     */
    function setHeader() {
        switch ($this->imageType) {
            case 'gif':
                header('content-type:image/gif');
                break;
            case 'jpeg':
                header('content-type:image/jpeg');
                break;
            case 'png':
                header('content-type:image/png');
                break;
            default:
                exit('Can not set header.');
                break;
        }
        return true;
    }
   
    /**
     * change the image size
     *
     * @param int $width
     * @param int $height
     * @return boolean
     */
    function changeSize($width, $height = -1) {
        if(!is_resource($this->imageResource)) {
            exit('不能改变图片的尺寸,可能是你没有设置图片来源.');
        }
        $s_width = $this->imageInfo[0];
        $s_height = $this->imageInfo[1];
        $width = intval($width);
        $height = intval($height);
       
        if($width <= 0) exit('图片宽度必须大于零.');
        if($height <= 0) {
            $height = ($s_height / $s_width) * $width;
        }
       
        $this->target = imagecreatetruecolor($width, $height);
        if(@imagecopyresized($this->target, $this->imageResource, 0, 0, 0, 0, $width, $height, $s_width, $s_height))
            return true;
        else
            return false;
    }
   
    /**
     * Add watermark
     *
     * @param string $image
     * @param int $app
     */
    function addWatermark($image, $app = 50) {
        if(file_exists($image) && is_file($image)) {
            $s_info = getimagesize($image);
        } else {
            exit($image . '文件不存在.');
        }

        $r_width = $s_info[0];
        $r_height = $s_info[1];

        if($r_width > $this->imageInfo[0]) exit('水印图片必须小于目标图片');
        if($r_height > $this->imageInfo[1]) exit('水印图片必须小于目标图片');
       
        switch ($s_info['mime']) {
            case 'image/gif':
                $resource = imagecreatefromgif($image);
                break;
            case 'image/jpeg':
            case 'image/jpg':
                $resource = imagecreatefromjpeg($image);
                break;
            case 'image/png':
                $resource = imagecreatefrompng($image);
                break;
            default:
                exit($s_info['mime'] .'类型不能作为水印来源.');
                break;
        }
       
        $this->target = &$this->imageResource;
        imagecopymerge($this->target, $resource, $this->imageInfo[0] - $r_width - 5, $this->imageInfo[1] - $r_height - 5, 0,0 ,$r_width, $r_height, $app);
        imagedestroy($resource);
        unset($resource);
    }
   
    /**
     * create image
     *
     * @param string $name
     * @return boolean
     */
    function create($name = NULL) {
        $function = $this->createFunc;
        if($this->target != NULL && is_resource($this->target)) {
            if($name != NULL) {
                $function($this->target, $name);
            } else {
                $function($this->target);
            }
            return true;
        } else if($this->imageResource != NULL && is_resource($this->imageResource)) {
            if($name != NULL) {
                $function($this->imageResource, $name);
            } else {
                $function($this->imageResource);
            }
            return true;
        } else {
            exit('不能创建图片,原因可能是没有设置图片来源.');
        }
    }
   
    /**
     * free resource
     *
     */
    function free() {
        if(is_resource($this->imageResource)) {
            @imagedestroy($this->imageResource);
        }
        if(is_resource($this->target)) {
            @imagedestroy($this->target);
        }
    }
}
?>