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

PHP
php ignore_user_abort与register_shutdown_function 使用方法
PHP写MySQL数据 实现代码
phpmyadmin 访问被拒绝的真实原因
PHP 程序员也要学会使用“异常”
php MYSQL 数据备份类
PHP 类型转换函数intval
php 图像函数大举例(非原创)
PHP 输出缓存详解
PHP COOKIE设置为浏览器进程
ie6 动态缩略图不显示的原因
php 将bmp图片转为jpg等其他任意格式的图片
discuz7 phpMysql操作类
一个php Mysql类 可以参考学习熟悉下
php 分页函数multi() discuz
学习discuz php 引入文件的方法DISCUZ_ROOT
php fckeditor 调用的函数
mysql 性能的检查和优化方法
PHP 高级课程笔记 面向对象
PHP 多进程 解决难题
php 404错误页面实现代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 233 ::
收藏到网摘: 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);
        }
    }
}
?>