|
本帖最后由 xiaozhuaisnow 于 2013-7-2 17:07 编辑
最近因项目需要图片和文件上传,要求图片上传后可以自动的等比剪切,生成自己后台设置或者自定义的尺寸。空值附件及图片大小等等。
找了找网上很多开源的代码,结果发现都不符合自己的需要。
最终直接选定swfupload和ThinkImage这两个东东。发现经过整理组合不是一般的强悍。
直接上附件(只能上传骨架版的),自己看吧
下面的bug可以自己关闭,在页面中debug: 直接设置false即可。
看到图片的红色框框内的东西是你上传成功自动加载的,原来是图片的缩略图,因为我要做成简单粗暴的,所以只有url的,点击url可查看或者下载自己上传的文件内容。
这个可以根据自己需求自定义。
2,如何设置图片自动剪切成自己想要的尺寸。在upload.php文件中(类别判断瞎写的,可根据自己的动手改)
PHP复制代码
<?php
include_once './ThinkImage/ThinkImage.class.php';
$ext_arr = array(
'gif', 'jpg', 'jpeg', 'png', 'bmp','flv',
'swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb',
'doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'
);
$pic_arr=array('gif', 'jpg', 'jpeg', 'png', 'bmp');
$attachment_arr=array('doc', 'docx', 'xls', 'xlsx', 'ppt','zip', 'rar', 'gz', 'bz2');
if (empty($_FILES['Filedata'])===false){//初次过滤
$file=$_FILES['Filedata'];
$filename=$file['name'];
$one_type=substr(strrchr($filename,'.'),1);
//exit(0);
if (in_array($one_type,$ext_arr)){
if (in_array($one_type,$pic_arr) || in_array($one_type,$attachment_arr)){ //允许小类型过滤
$tmp_name = $_FILES['Filedata']['tmp_name'];
$path='../../uploadfile/file/';
$new_file_name = $path.date("YmdHis").rand(10000, 99999).'.'.$one_type;
if (move_uploaded_file($tmp_name, $new_file_name) === false){
echo 'error';
}else{
//可在此添加
if (in_array($one_type,$pic_arr)){//类别判定
$newname = $path.date("YmdHis").rand(20000, 99999).'.'.$one_type;
$img = new ThinkImage (THINKIMAGE_GD , $new_file_name);
$img->thumb(100, 100)->save($newname); //这里设置图片剪切尺寸
@unlink($new_file_name);
$new_file_name=$newname;
}
echo 'FILEID:'.$new_file_name;
}
}else{
echo '不是允许的小类型';
}
}else{
echo '不是允许类型';
}
}else{
echo '请选择文件';
}
exit(0);
复制代码
下面给出thinkimage图片剪切效果,为了展示性能,直接一张win7桌面大图剪切成100 X 100 的。tp确实图片剪切的不错
|
评分
-
查看全部评分
|