请看代码:
list($maintype,$subtype)=explode("/", $_FILES['upload']['type']);
function set_thumb ($width, $height) {
$thumb_width = $width;
$thumb_height = $height;
}
//创建缩略图,以相同的扩展名生成缩略图
//$src_file : 来源图像路径 , $thumb_file : 缩略图路径
function create_thumb ($src_file,$thumb_file) {
$t_width = $thumb_width;
$t_height = $thumb_height;
if (!file_exists($src_file)) return false;
$src_info = getImageSize($src_file);
//如果来源图像小于或等于缩略图则拷贝源图像作为缩略图,免去操作
if ($src_info[0] <= $t_width && $src_info[1] <= $t_height) {
if (!copy($src_file,$thumb_file)) {
return false;
}
return true;
}
//按比例计算缩略图大小
if (($src_info[0]-$t_width) > ($src_info[1]-$t_height)) {
$t_height = ($t_width / $src_info[0]) * $src_info[1];
} else {
$t_width = ($t_height / $src_info[1]) * $src_info[0];
}
switch ($subtype) {
case 'jpg' :
$src_img = ImageCreateFromJPEG($src_file); break;
case 'png' :
$src_img = ImageCreateFromPNG($src_file); break;
case 'gif' :
$src_img = ImageCreateFromGIF($src_file); break;
}
//创建一个真彩色的缩略图像
$thumb_img = @ImageCreateTrueColor($t_width,$t_height);
//ImageCopyResampled函数拷贝的图像平滑度较好,优先考虑
if (function_exists('imagecopyresampled')) {
@ImageCopyResampled($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);
} else {
@ImageCopyResized($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);
}
//生成缩略图
switch ($subtype) {
case 'jpg' :
ImageJPEG($thumb_img,$thumb_file); break;
case 'gif' :
ImageGIF($thumb_img,$thumb_file); break;
case 'png' :
ImagePNG($thumb_img,$thumb_file); break;
}
//销毁临时图像
@ImageDestroy($src_img);
@ImageDestroy($thumb_img);
return true;
}
我是这么调用的:
$upfile='uploads/'.rand(0,10000).date('YmdHis').iconv("utf8", "UTF-8", $_FILES['upload']['name']);
$thumb_file='uploads/'.'thumb_'.rand(0,10000).date('YmdHis').iconv("utf8", "UTF-8", $_FILES['upload']['name']);
if(is_uploaded_file($_FILES['upload']['tmp_name'])){
if(!move_uploaded_file($_FILES['upload']['tmp_name'], $upfile)){
echo "<script language='javascript'>";
echo "alert('不能移动到指定目录!');";
echo "window.history.go(-1);";
echo "</script>";
exit();
}
@unlink($_FILES['upload']['tmp_name']);
set_thumb(100,80);
if(create_thumb($upfile,$thumb_file)){
$thumbfile=$thumb_file;
}
...//中间省略一些数据库操作代码
数据库里有缩略图的路径,但文件夹里面没有生成缩略图