我想强制调整大小并在上传时转换任何图片。(?)
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)
我能看到的一个问题是(缺少数组索引):
$file=$_FILES["ufile"]["tmp_name"];
...
$src_image = imagecreatefromjpeg($_FILES["ufile"]["tmp_name"]);
您缺少索引,因此当您尝试获取尺寸时,结果将不会是您期望的结果。
你需要:
$file=$_FILES["ufile"]["tmp_name"][$i];
...
$src_image = imagecreatefromjpeg($_FILES["ufile"]["tmp_name"][$i]);
除此之外,您应该启用错误处理和显示,以便您可以轻松捕获这些问题。你可以通过在脚本的顶部添加这样的东西来做到这一点:
ini_set('display_errors',1);
error_reporting(E_ALL | E_STRICT);
修改强>
您不应在不是文件上传的文件上使用move_uploaded_file()
,还需要使用刚刚为imagejpeg
函数的第一个参数生成的图像资源:
$actual_image_name = $name[$i].'.'.'jpg';
imagejpeg($dst_image, $path.$actual_image_name);