PHP:制作缩略图,为什么我会收到这些错误?

时间:2010-09-01 12:32:37

标签: php

当我完成这个功能时:

function makeThumbnail($type, $name, $size, $tmp_name, $thumbSize) {

//make sure this directory is writable!

$path_thumbs = "uploaded_files/";       

//the new width of the resized image, in pixels.

$img_thumb_width = $thumbSize; // 

$extlimit = "yes"; //Limit allowed extensions? (no for all extensions allowed)

//List of allowed extensions if extlimit = yes

$limitedext = array(".gif",".jpg",".png",".jpeg",".bmp");       

//the image -> variables
$file_type = $type;

$file_name = $name;

$file_size = $size; 

$file_tmp = $tmp_name;
//check if you have selected a file.
echo $file_tmp."<br>";
echo $file_name."<br>";
echo $file_type."<br>";
echo $file_size."<br>";

if(!is_uploaded_file($file_tmp)){

echo "Error: Please select a file to upload!. <br>--<a href=\"$_SERVER[PHP_SELF]\">back</a>";

exit(); //exit the script and don't process the rest of it!

}

//check the file's extension

$ext = strrchr($file_name,'.');

$ext = strtolower($ext);

//uh-oh! the file extension is not allowed!

if (($extlimit == "yes") && (!in_array($ext,$limitedext))) {

echo "Wrong file extension.  <br>--<a href=\"$_SERVER[PHP_SELF]\">back</a>";

exit();

}

//so, whats the file's extension?

$getExt = explode ('.', $file_name);

$file_ext = $getExt[count($getExt)-1];

//create a random file name

$rand_name = md5(time());

$rand_name= rand(0,999999999);

//the new width variable

$ThumbWidth = $img_thumb_width;



/////////////////////////////////

// CREATE THE THUMBNAIL //

////////////////////////////////



//keep image type

if($file_size){

if($file_type == "image/pjpeg" || $file_type == "image/jpeg"){

$new_img = imagecreatefromjpeg($file_tmp);

}elseif($file_type == "image/x-png" || $file_type == "image/png"){

$new_img = imagecreatefrompng($file_tmp);

}elseif($file_type == "image/gif"){

$new_img = imagecreatefromgif($file_tmp);

}

//list the width and height and keep the height ratio.

list($width, $height) = getimagesize($file_tmp);

//calculate the image ratio

$imgratio=$width/$height;

if ($imgratio>1){

$newwidth = $ThumbWidth;

$newheight = $ThumbWidth/$imgratio;

}else{

$newheight = $ThumbWidth;

$newwidth = $ThumbWidth*$imgratio;

}

//function for resize image.

if (function_exists(imagecreatetruecolor)){

$resized_img = imagecreatetruecolor($newwidth,$newheight);

}else{

die("Error: Please make sure you have GD library ver 2+");

}

//the resizing is going on here!

imagecopyresampled($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

//finally, save the image

ImageJpeg ($resized_img,"$path_thumbs/$rand_name.$file_ext", 100);

ImageDestroy ($resized_img);

ImageDestroy ($new_img);





}



//ok copy the finished file to the thumbnail directory

// move_uploaded_file ($file_tmp, "$path_big/$rand_name.$file_ext");

/*

Don't want to copy it to a separate directory?

Want to just display the image to the user?

Follow the following steps:



2. Uncomment this code:

/* 

/* UNCOMMENT THIS IF YOU WANT */

echo "OK THUMB " . $thumbSize;

exit();

//*/



//and you should be set!



//success message, redirect to main page.       

$msg = urlencode("$title was uploaded! <a href=\"Resize.php\">Upload More?</a>");
}

然后它停止工作,但在功能之外,它运作良好。

正如你所看到的,我添加了“echo $ file ....”因为我想知道它们是否有价值,而且它们确实有正确的值。

我刚收到错误错误:请选择要上传的文件。

此功能在正常上传图像脚本(完整尺寸)后运行。

当我调用我执行的功能时:

makeThumbnail($_FILES[$fieldname]['type'], $_FILES[$fieldname]['name'], $_FILES[$fieldname]['size'], $_FILES[$fieldname]['tmp_name'], 100);

在我的另一个不在函数中的文件中,只有变量是:

$file_type = $_FILES['file']['type'];

$file_name = $_FILES['file']['name'];

$file_size = $_FILES['file']['size'];

$file_tmp = $_FILES['file']['tmp_name'];

但它应该有效,我找不到任何错误,但它没有,我一直得到那个错误。如果我删除了is_uploaded_file函数,我会收到一堆其他错误。

2 个答案:

答案 0 :(得分:2)

在调用函数之前,请确保没有使用move_uploaded_file()

答案 1 :(得分:0)

我将timthumb用于在将图像输出到屏幕时将图像处理为缩略图,而不是在图像上传时。

这意味着您只有一个文件而不是一个主尺寸和一个拇指尺寸。 TimThumb减少了服务器端文件的大小,因此在浏览器上看起来很漂亮。看看它:TimThumb Link