<?php
namespace Upload\Controller;
use Think\Controller;
/*
* 上传 缩略图 水印 等
*/
class IndexController extends Controller {
public function index(){
//demo 上传文件测试
$img = M("Photo");
$list = $img->order('id desc')->select();
$this->assign('list',$list);
$this->display();
}
//------------ 处理上传文件 控制器 ----------------//
public function upload(){
header("content-type:text/html;charset=utf-8");
$upload = new \Think\Upload(); // 实例化上传类
$upload->maxSize = 1024*1024 ;// 设置附件上传大小 (-1) 是不限值大小
$upload->allowExts = array(
'jpg', 'gif', 'png', 'jpeg'
);// 设置附件上传类型
$upload->savePath = 'Public/thumb/';// 设置附件上传目录
$upload->replace = true; //存在同名文件是否是覆盖
// 是否使用子目录保存上传文件
$upload->autoSub = true;
// 采用date函数生成命名规则 传入Y-m-d参数
//$upload->saveName = array('date','Y-m-d');
//如果有多个参数需要传入的话 可以使用数组
//$upload->saveName = array('myFun',array('__FILE__','val1','val2'));
$info = $upload->upload();
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功 获取上传文件信息
// 保存表单数据 包括附件数据
$up = M("Photo"); // 实例化upload对象
foreach ($info as $v){
//缩略图 文件保存地址
$timage ="./Uploads/".$v['savepath'].$v['savename'];
//上传数据库
$arr['image'] = $v['savepath'].$v['savename'];//保存图片路径
$arr['create_time'] = NOW_TIME;//创建时间
//----- 创建缩略图 -----//
if ($_POST['thum'] == 1){
// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg
$spath = "./Uploads/".$v['savepath']."s_".$v['savename']; //缩略图名称 地址
$this->thumbs($timage,$spath,$_POST['hejpg'],$_POST['wijpg']);
$arr['simage'] = $v['savepath']."s_".$v['savename'];//保存缩略图片路径
}
//------- 添加水印 ------//
$pos = isset($_POST['pos'])?$_POST['pos']:'1'; //默认左上
$text = isset($_POST['text'])?$_POST['text']:'think';
$color = isset($_POST['color'])?$_POST['color']:'#ccc';
$size = empty($_POST['size'])?'50':$_POST['size'];
if ($_POST['statu'] == 1 && $_POST['text'] != ''){ //文字水印
echo "文字水印";
$Image = new \Think\Image();
// 在图片右下角添加水印文字 (入口文件下放置字库文件 1.ttf)
$Image->open($timage)->text($text,'./1.ttf',$size,$color,$pos)->save($timage);
}
else if($_POST['statu'] == 1 && $_POST['text'] == ''){//图片水印
echo "图片水印";
$this->photowater($timage,$pos);
}
if(!$up->create($arr)){ // 创建数据对象
$this->error($up->getError());
exit();
}
if($up->add() === false){ // 写入用户数据到数据库
$this->error('数据保存失败');
exit();
}
}
$this->success('数据保存成功',"../",10);
}
}
/* ---------- 编辑图片 ------------ *
* $image 原有图片
* $spath 修改后的编辑图片
* $height 高度
* $width 宽度
* $thumbname 缩略名
*/
public function thumbs($image,$spath,$height=150,$width=150){ //传入图片
$Image = new \Think\Image(); // 给avator.jpg 图片添加logo水印
$Image->open($image);
// 生成一个固定大小为150*150的缩略图并保存为thumb.jpg
$Image->thumb($height, $width,\Think\Image::IMAGE_THUMB_FIXED)->save($spath);
// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg
//$image->thumb($height,$width)->save($tpath.$thumbname);
//将图片裁剪为400x400并保存为corp.jpg
//$image->crop($height,$width)->save('./crop.jpg');
return $spath;//时间戳加后缀
}
/* ---------------- 检验 验证码 ----------------- *
* $code 用户验证码
*/
public function check_verify($code, $id = ''){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}
/* ------------- 图片加图片logo水印 ------------- *
* $image 操作图片
* $pos 水印位置
*/
public function photowater($image,$pos){//重复名字 水印覆盖图片
$Image = new \Think\Image();
// 在图片左上角添加水印(水印文件位于./logo.png) 水印图片的透明度为50 并保存为water.jpg (入口文件下放置水印图片)
$Image->open($image)->water('./logo.png',$pos,80)->save($image);
}
}
// -------------------------------- 支持多文件上传 添加水印 创建缩略图 ---------------------------------------------//
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<me
<ti
<li
<sc
<sc
</head>
<body>
<span> 上传文件测试Demo </span>
<form action="__URL__/upload/" method='post' enctype='multipart/form-data'>
<br />
<input type="file" name="photo1" />
<br />
<input type="file" name="photo2">
<br />
<input type="file" name="photo3">
<br />
<hr>
是否开启水印<br />
<input type='radio' value='1' name='statu' checked />开
<input type='radio' value='2' name='statu' />关
<br />
选择水印位置
<input type='radio' value='1' name='pos' checked />左上
<input type='radio' value='7' name='pos' />左下
<input type='radio' value='3' name='pos' />右上
<input type='radio' value='9' name='pos' />右下
<input type='radio' value='5' name='pos' />居中
<br>
文字水印内容:<br />
<input type='text' size='15' name='text'/> (填写添加文字水印,图片水印请留空)
<br>
水印文字大小:
<input type='text' size='5' name='size' />
<br>
请选择水印文字颜色:
<div st
颜色拾取 : <input id='cl' name="color" type="text" hx="#ccc" />
</div>
<sc
$('#cl').iColor({'x': 10, 'y': -50});
</sc
<hr>
是否创建缩略图
<input type='radio' value='1' name='thum' checked />开
<input type='radio' value='2' name='thum' />关
<br/>
高 :<input type='text' name='hejpg' size='5' value='150' />
宽 :<input type='text' name='wijpg' size='5' value='150' />
<hr>
<br />
<input type='submit' value='确认上传' />
</form>
<div>
<br />
<br />
<br />
<br />
<hr>
<volist name='list' id='vo' >
<span><{$vo['id']}></span>
<img st
<notempty name='vo["simage"]'>
<img st
</notempty>
<hr>
</volist>
</div>
</body>
</html>
tp32demo.rar
( 3.33 MB 下载:944 次 )
最佳答案
