我遇到了从上传的图片文件创建缩略图,然后将其上传到服务器的问题。
截至目前,我有一个创建缩略图的功能,将其保存为临时表并将其返回给调用者。
然后我尝试做的是使用move_uploaded_file(tempthumb,path)上传创建的拇指图像;
这是createThumb函数和调用者:
function createThumb( $image, $thumbWidth )
{
// load image and get image size
$img = imagecreatefromjpeg( "{$image}" );
$width = imagesx( $img );
$height = imagesy( $img );
// calculate thumbnail size
$new_width = $thumbWidth;
$new_height = floor( $height * ( $thumbWidth / $width ) );
// create a new temporary image
$tmp_img = imagecreatetruecolor( $new_width, $new_height );
// copy and resize old image into new image
imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
return $tmp_img;
}
return $tmp_img; // Here I return the new image. Is this the proper way to get a binary image back??
以下是来电者:
$thumb = createThumb($_FILES['propform-previmg']['tmp_name'], $max_previmg_width);
$filenamepath = $src_dir . '/thumb/' . $_FILES['propform-previmg']['name'];
if ( !move_uploaded_file($thumb, $filenamepath ))
echo "Error moving file {$filenamepath}";
我尝试直接上传上传的文件,而不是先尝试制作缩略图,而且工作正常。所以我猜我从createThumb函数返回的变量有一些错误,但我无法弄明白究竟是什么。
另外,我需要从调用者代码进行上传,而不是使用imagejpeg(文件,路径)在createThumb函数内部进行上传。
谢谢!
答案 0 :(得分:0)
manual的第一行:
此函数检查以确保filename指定的文件是有效的上载文件(表示它是通过PHP的HTTP POST上载机制上传)。如果文件有效,它将被移动到目的地给出的文件名。
您的缩略图未上传,它甚至还不是文件,只是图像资源。要编写图像,请调用imagejpeg($resource, $filename)
之类的内容将其写入$filename
中指定的路径。