CakePhp phpThumb Compenet

参照了一下官网的国际友人的一篇 帖子修改的

请先将phpthumb的所有文件放在  app/vendors下,如 phpthumb.class.php 文件的路径是
引用
app/vendors/phpThumb/phpthumb.class.php


修改  index.php 加上 ROOT的定义后面加上 ,默认图片上传的路径

if (!defined('PIC_UPLOAD_DIR')) {
    define('PIC_UPLOAD_DIR', ROOT.DS.APP_DIR.DS."upload");
}

然后就可在 controller中调用
var  $components = array('phpThumb');

function someFunction(){

//设置参数
$this->phpThumb->setParams($params);

//生成略缩图
$this->phpThumb->generateThumb($path);

//调试信息
$this->phpThumb->debugMsg;

}





<?php

/**
 * phpThumb 组件 生成略缩图
 *
 * @author rikugun
 */

App::import('vendor','phpThumb',array('file' =>'phpThumb'.DS.'phpthumb.class.php'));
class phpThumbComponent extends Object {


    /**
     *  水印字符
     * @var <string>
     */
    var $wmtStr = 'www.uCoulor.com';
    /**
     *  水印字体大小 1-5
     * @var <int>
     */
    var $wmtFontSize = 5;

    /**
     *  允许生成的源图形mime类型
     * @var <array>
     */
    var $allowed_mime_types = array('image/jpeg','image/pjpeg','image/gif','image/png');
    /**
     *  略缩图生成路径 **必须可写
     * @var <string>
     */
    var $image_location = 'thumb';

    /**
     *  错误输出数组
     * @var <array>
     */
    var $errors = array();
    /**
     *  phpThumb 调试信息
     * @var <array>
     */
    var $debugMsg = array();
    /**
     *  图像默认宽 px
     * @var <int>
     */
    var $width = 300;

    /**
     *  图像默认高 px
     * @var <int>
     */
    var $height = 200;

    /**
     *  图像缩放
     * @var <float>
     */
    var $zoom_crop = 0;
    /**
     *  jpg 输出质量
     * @var <int>
     */
    var $q = 95;

    var $phpThumb;

    function __construct() {
        $this->phpThumb = new phpthumb();
    }


    /**
     *  生成略缩图
     * @param <string> $filename 格式: 20090505/1211412xxx.jpg
     * @return <boolean>
     */
    function generateThumb($filename) {

    //判断源文件是否存在
        if (!file_exists(PIC_UPLOAD_DIR.DS.$filename)) {
            $this->addError('源文件: '.PIC_UPLOAD_DIR.DS.$filename.' 不存在.');
            return false;
        }
        //确认输出目录可写
        if(!is_writable(WWW_ROOT.$this->image_location)) {
            $this->addError('目录: '.WWW_ROOT.$this->image_location.' 不可写.');
            return false;
        }
        $thumbDayDir = basename(dirname($filename));

        //确认日期目录
        if(!is_dir(WWW_ROOT.$this->image_location.DS.$thumbDayDir)) {
            mkdir(WWW_ROOT.$this->image_location.DS.$thumbDayDir,0777,true);
        }

        //转移水印字符
        $sUcoulor = htmlentities(urlencode($this->wmtStr));

        //        $phpThumb = new phpThumb();
        $this->phpThumb->setSourceFilename(PIC_UPLOAD_DIR.DS.$filename);
        $this->phpThumb->setParameter('config_allow_src_above_docroot', true);
        $this->phpThumb->setParameter('w',$this->width);
        $this->phpThumb->setParameter('h',$this->height);
        $this->phpThumb->setParameter('zc',$this->zoom_crop);
        $this->phpThumb->setParameter('q',$this->q);
        //设置水印
        $this->phpThumb->setParameter('fltr', "wmt|www.ucolor.com|{$this->wmtFontSize}|BR|EE3322");


        if($this->phpThumb->GenerateThumbnail()) {
            if(!$this->phpThumb->RenderToFile(WWW_ROOT.$this->image_location.DS.$filename)) {
                $this->addError('无法保存生成图片为: '.$this->image_location.DS.$filename);
            }
        } else {
            $this->addError('无法生成略缩图,请查看debug信息!');
        }
        if(count($this->errors)>0) {
            if(file_exists(WWW_ROOT.$this->image_location.DS.$filename)) {
                unlink(WWW_ROOT.$this->image_location.DS.$filename);
            }
            $this->debugMsg = $this->phpThumb->debugmessages;
            return false;
        } else return true;
    }
    /**
     *  设置phpThumb 参数
     * @param <array> $params 参数
     */
    function setParams($params) {
        foreach ($params as $k=>$v) {
            $this->phpThumb->setParameter($k, $v);
        }
    }
    function addError($msg) {
        $this->errors[] = $msg;
    }
}
?>


你可能感兴趣的:(PHP,cakephp)