if ( $_FILES["ufile"]["type"] [$i] == "image/jpeg" || $_FILES["ufile"]["type"] [$i] == "image/jpg" || $_FILES["ufile"]["type"] [$i] == "image/png" || $_FILES["ufile"]["type"] [$i] == "image/gif" )
{
if ($_FILES["ufile"]["type"] [$i] == "image/png" || $_FILES["ufile"]["type"] [$i] == "image/gif" || $_FILES["ufile"]["type"] [$i] == "image/jpeg" || $_FILES["ufile"]["type"] [$i] == "image/jpg" )
{
$file=$_FILES["ufile"]["tmp_name"];
list($width, $height) = getimagesize($file);
$new_width = 200;
$new_height = 500;
$dst_image = imagecreatetruecolor($new_width,$new_height);
$src_image = imagecreatefromjpeg($_FILES["ufile"]["tmp_name"]);
imagecopyresized ($dst_image, $src_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg(imagecreatefromstring(file_get_contents($dst_image)), "convert.jpg");
$actual_image_name = $name[$i].'.'.'jpg';
move_uploaded_file("convert.jpg", $path.$actual_image_name);
}
}
答案 0 :(得分:0)
你完全误用了GD。 $dst_image
是GD图像句柄。 不文件。因此...... file_get_contents()
将返回布尔值FALSE,因为您尝试从不文件名中获取内容。 imagecreatefromstring()
将返回布尔值false,因为布尔值false是而不是图像字符串,并且imagejpeg()
将返回布尔值FALSE,因为您没有将它传递给GD句柄。
简而言之,您的代码可以带来一些改进。你只是假设什么都不会出错,不要检查失败,那些失败通过代码传播。
你真正需要的只是
image_jpeg($dst_image, 'convert.jpg');
然后您的move_uploaded_file
将也失败,因为“convert.jpg”不是上传的文件。这是您自己在服务器上创建的文件。它可能基于上传的文件,但其本身不上传的文件。为什么不呢
image_jpeg($dst_image, "$path/$actual_image_name");