ThinkPhp 生成多张不同尺寸的缩略图 100

一个form表单上传多个图片的时候如何单独指定某个图片的缩略图尺寸第一次使用thinkphp已查过手册和百度没得到解决请教了。现在使用手册上的upload方法里面有属性$... 一个form表单上传多个图片的时候如何单独指定 某个图片的缩略图尺寸第一次使用thinkphp 已查过手册 和百度 没得到解决 请教了。现在使用手册上 的 upload方法 里面有属性$upload->thumbMaxWidth = $width;$upload->thumbMaxHeight = $height;可是这俩个属性针对的是 提交上来的表单里的所有数据 不能单个指定缩略图的尺寸,请教各位该如何使用 展开
 我来答
tyua07
2013-11-05 · TA获得超过156个赞
知道小有建树答主
回答量:101
采纳率:100%
帮助的人:102万
展开全部

其实很简单,那个缩略图宽度和高度可以定义多个,然后用逗号分割就好了。

//公共上传
    private function _upload($width, $height, $path, $prefix) {
        import('ORG.Net.UploadFile');
        $upload = new UploadFile(); // 实例化上传类
        $upload->maxSize = C('UPLOAD_SIZE'); // 设置附件上传大小
        $upload->savePath = './Uploads/' . $path; // 设置附件上传目录
        $upload->allowExts = array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型
        $upload->saveRule = 'time';
        $upload->uploadReplace = true; //是否存在同名文件是否覆盖
        $upload->thumb = true; //是否对上传文件进行缩略图处理
        $upload->thumbMaxWidth = $width; //缩略图处理宽度
        $upload->thumbMaxHeight = $height; //缩略图处理高度
        $upload->thumbPrefix = $prefix; //缩略图前缀
        $upload->thumbPath = './Uploads/' . $path . date('Ymd', time()) . '/'; //缩略图保存路径
        $upload->thumbRemoveOrigin = true; //上传图片后删除原图片
        $upload->autoSub = true; //是否使用子目录保存图片
        $upload->subType = 'date'; //子目录保存规则
        $upload->dateFormat = 'Ymd'; //子目录保存规则为date时时间格式


        if (!$upload->upload()) {// 上传错误提示错误信息
            echo json_encode(array('msg' => $this->error($upload->getErrorMsg()), 'status' => 0));
        } else {// 上传成功 获取上传文件信息
            $info = $upload->getUploadFileInfo();
            $picname = $info[0]['savename'];
            
            $picname = explode('/', $picname);
            $picname = $picname[0] . '/' . $prefix . $picname[1];
            echo json_encode(array('status' => 1, 'msg' => $picname));
            
            
            
            
            
        }
    }

然后你比如生成300*300的的图片你就定义一个方法

例如: //商品缩略图上传
    public function uploadThumb() {
        return $this->_upload('230,160', '230,121', 'thumb/', 'shop_,thumb_');
    }


然后400*400的就又写一个方法:

 //商品缩略图上传
    public function uploadThumb() {
        return $this->_upload('400,200', '400,200', 'thumb/', 'shop_,thumb_');
    }


然后调用的不同就好了

更多追问追答
追问
upload('400,200', '400,200', 'thumb/', 'shop_,thumb_');
我看手册 我的理解是 你这串代码 会上传的时候 会生成两个缩略图 生成一张400*400 和一张200*200的

你的回答的意思是说 uolpad这个方法调用两次 上传两次生成不同大小的图?
追答
是这个意思,你的需求是158*166一张,其他的都是393*383
你就写2个方法就好了
第一个
public function uploadThumb() {
return $this->_upload('158', '166', 'thumb/', 'shop_,thumb_');
}

public function uploadThumb() {
return $this->_upload('393', '383', 'thumb/', 'shop_,thumb_');
}

这个就不行了么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式