thinkcmf5 生成缩略图
2019年03月07日 10:36:33 灬水月灬 阅读数 339
该方法是使用thinkphp框架自带的生成缩略图方法,把生成的缩略图根据定义的宽高各自存放。如果存在相同宽高、名称的缩略图,则不再生成新的缩略图。
1.在public\upload\里添加文件夹thumbnail来存放缩略图。
2.在\simplewind\cmf\common.php 的最后添加以下代码:
/*** 生成缩略图 (不替换原图)* @param $img 原图路径 路径格式: admin/20180101/xxxxxxx.png* @param int $width 宽度* @param int $height 高度* @return string 返回可访问的图片路径*/ function thumb($img,$width = 500,$height = 500){ini_set('memory_limit','300M'); //防止内存溢出(如果图片分辨率太高可能出现内存溢出) if(empty($img)){return '';} if (strpos($img, "http") === 0) {return $img;}$array = explode('/',$img);if(count($array) != 3){return cmf_get_image_url($img);}$img_name = $array[2]; //获取图片名称//如果原图已丢失if(!file_exists("./upload/$img")){return '';}if(is_dir("./upload/thumbnail/$width$height")){if(file_exists("./upload/thumbnail/$width$height/$img_name")) {//图片缩略图已存在return cmf_get_image_url("thumbnail/$width$height/$img_name");}else{//生成缩略图$image = \think\Image::open(ROOT_PATH."/public/upload/$img");$image->thumb($width, $height)->save("./upload/thumbnail/$width$height/$img_name",null,100);return cmf_get_image_url("thumbnail/$width$height/$img_name");}}else{mkdir("./upload/thumbnail/$width$height"); //创建文件夹//生成缩略图 $image = \think\Image::open("./upload/$img");$image->thumb($width, $height)->save("./upload/thumbnail/$width$height/$img_name",null,100);return cmf_get_image_url("thumbnail/$width$height/$img_name");}}
html调用例子: {:thumb($vo.thumbnail,600,600)}