thinkphp3.2.x版本中图片上传缩略图的解决方案

来源:互联网 发布:淘宝的一元拍卖代理 编辑:程序博客网 时间:2024/05/16 11:09
调用方式很简单 get_sc($cover_id,[$width=180,$height=auto,$cut])

@param $cover_id 图片ID___

@param $width 宽度___

@param $height 高___

@param $cut 是否切割 默认不切割___

直接返回新图片的url

可以替换get_cover($cover_id,'path');

get_cover里做了简单的默认图片判断,大家可以自己改一下。


/** * 获取缩略图 * @param unknown_type $filename 原图路劲、url * @param unknown_type $width 宽度 * @param unknown_type $height 高 * @param unknown_type $cut 是否切割 默认不切割 * @return string */function getThumbImage($filename, $width = 100, $height = 'auto',$cut=false, $replace = false){    define('UPLOAD_URL', '');    define('UPLOAD_PATH', '');    $filename = str_ireplace(UPLOAD_URL, '', $filename); //将URL转化为本地地址    $info = pathinfo($filename);    $oldFile = $info['dirname'] . DIRECTORY_SEPARATOR . $info['filename'] . '.' . $info['extension'];    $thumbFile = $info['dirname'] . DIRECTORY_SEPARATOR . $info['filename'] . '_' . $width . '_' . $height . '.' . $info['extension'];    $oldFile = str_replace('\\', '/', $oldFile);    $thumbFile = str_replace('\\', '/', $thumbFile);    $filename = ltrim($filename, '/');    $oldFile = ltrim($oldFile, '/');    $thumbFile = ltrim($thumbFile, '/');    //原图不存在直接返回    if (!file_exists(UPLOAD_PATH . $oldFile)) {        @unlink(UPLOAD_PATH . $thumbFile);        $info['src'] = $oldFile;        $info['width'] = intval($width);        $info['height'] = intval($height);        return $info;        //缩图已存在并且 replace替换为false    } elseif (file_exists(UPLOAD_PATH . $thumbFile) && !$replace) {        $imageinfo = getimagesize(UPLOAD_PATH . $thumbFile);        //dump($imageinfo);exit;        $info['src'] = $thumbFile;        $info['width'] = intval($imageinfo[0]);        $info['height'] = intval($imageinfo[1]);        return $info;        //执行缩图操作    } else {        $oldimageinfo = getimagesize(UPLOAD_PATH . $oldFile);        $old_image_width = intval($oldimageinfo[0]);        $old_image_height = intval($oldimageinfo[1]);        if ($old_image_width <= $width && $old_image_height <= $height) {            @unlink(UPLOAD_PATH . $thumbFile);            @copy(UPLOAD_PATH . $oldFile, UPLOAD_PATH . $thumbFile);            $info['src'] = $thumbFile;            $info['width'] = $old_image_width;            $info['height'] = $old_image_height;            return $info;        } else {            //生成缩略图            // tsload( ADDON_PATH.'/library/Image.class.php' );            // if($cut){            //     Image::cut(UPLOAD_PATH.$filename, UPLOAD_PATH.$thumbFile, $width, $height);            // }else{            //     Image::thumb(UPLOAD_PATH.$filename, UPLOAD_PATH.$thumbFile, '', $width, $height);            // }            //生成缩略图 - 更好的方法            if ($height == "auto") $height = 0;            //import('phpthumb.PhpThumbFactory');            require_once('ThinkPHP\Library\Vendor\phpthumb\PhpThumbFactory.class.php');            $thumb = PhpThumbFactory::create(UPLOAD_PATH . $filename);            //dump($thumb);exit;            if ($cut) {                $thumb->adaptiveResize($width, $height);            } else {                $thumb->resize($width, $height);            }            $res = $thumb->save(UPLOAD_PATH . $thumbFile);            //缩图失败            if (!$res) {                $thumbFile = $oldFile;            }            $info['width'] = $width;            $info['height'] = $height;            $info['src'] = $thumbFile;            return $info;        }    }}function get_sc($cover_id, $width = 100, $height = 'auto', $cut = false, $replace = false){    $picture = M('Picture')->where(array('status' => 1))->getById($cover_id);    if(empty($picture))    {        return 'Public/static/assets/img/nopic.png';    }    $attach = getThumbImage($picture['path'], $width, $height, $cut, $replace);    return $attach['src'];}

调用的第三方类库,请到这里类库下载

0 0
原创粉丝点击