ThinkPHP示例之:缩略图生成 本示例演示了如何使用内置的文件上传类库进行附件上传操作,并自动生成缩略图,点击图片后显示带水印的图片。 上传允许文件类型:gif png jpg 图像文件,分别生产2张缩略图。并且把原图删掉,点击稍大的图将会在新窗口中显示带水印的图片 示例源码 控制器IndexAction类 <?php class IndexAction extends Action { public function index() { $Photo = M('Photo'); $list = $Photo->order('create_time desc')->limit(2)->findAll(); $this->assign('list', $list); $this->display(); } public function upload() { if (!empty($_FILES)) { //如果有文件上传 上传附件 $this->_upload(); //$this->forward(); } } // 文件上传 protected function _upload() { import("@.ORG.UploadFile"); $upload = new UploadFile(); //设置上传文件大小 $upload->maxSize = 3292200; //设置上传文件类型 $upload->allowExts = explode(',', 'jpg,gif,png,jpeg'); //设置附件上传目录 $upload->savePath = '/Examples/File/Tpl/default/Public/Uploads/'; //设置需要生成缩略图,仅对图像文件有效 $upload->thumb = true; //设置需要生成缩略图的文件后缀 $upload->thumbPrefix = 'm_,s_'; //生产2张缩略图 //设置缩略图最大宽度 $upload->thumbMaxWidth = '400,100'; //设置缩略图最大高度 $upload->thumbMaxHeight = '400,100'; //设置上传文件规则 $upload->saveRule = uniqid; //删除原图 $upload->thumbRemoveOrigin = true; if (!$upload->upload()) { //捕获上传异常 $this->error($upload->getErrorMsg()); } else { //取得成功上传的文件信息 $uploadList = $upload->getUploadFileInfo(); import("@.ORG.Image"); //给m_缩略图添加水印, Image::water('原文件名','水印图片地址') Image::water($uploadList[0]['savepath'].'m_'.$uploadList[0]['savename'], '/Examples/File/Tpl/default/Public/Images/logo2.png'); $_POST['image'] = $uploadList[0]['savename']; } $model = M('Photo'); //保存当前数据对象 $data['image'] = $_POST['image']; $data['create_time'] = time(); $list = $model->add($data); if ($list !== false) { $this->success('上传图片成功!'); } else { $this->error('上传图片失败!'); } } } ?>