我正在尝试调整图片大小。它适用于单张图像。但是对于多个图像,我必须使用循环来逐个获取图像。
我收到错误==> 致命错误:无法重新声明createthumb()
以下是我的索引代码
HTML
<input id="files" name="files[]" multiple="multiple" accept="image/*" type="file">
PHP
$count = count($_FILES['files']['name']);
$i = 0;
while($i<$count)
{
move_uploaded_file($_FILES["files"]["tmp_name"][$i],"uploaded_files/" . $_FILES["files"]["name"][$i]);
//===========>Image Resize<=============
function createthumb($name,$filename,$new_w,$new_h)
{
$system=explode(".",$name);
if (preg_match("/jpg|JPG|jpeg|JPEG/",$system[1])){$src_img=imagecreatefromjpeg($name);}
elseif (preg_match("/png|PNG/",$system[1])){$src_img=imagecreatefrompng($name);}
elseif (preg_match("/gif|GIF/",$system[1])){$src_img=imagecreatefromgif($name);}
$old_x=imageSX($src_img);
$old_y=imageSY($src_img);
$thumb_w=500;
$thumb_h=300;
$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
if (preg_match("/png/",$system[1]))
{
imagepng($dst_img,$filename);
}
elseif (preg_match("/gif/",$system[1]))
{
imagegif($dst_img,$filename);
}
else{
imagejpeg($dst_img,$filename);
}
imagedestroy($dst_img);
imagedestroy($src_img);
}
$source_photo = 'uploaded_files/'. $_FILES["files"]["name"][$i];
$dest_photo = 'uploaded_files/'.$id.'_'.$i.'jpg';
//$d has some defined velue
$d = createthumb($source_photo, $dest_photo, 400, 400);
//===========>Image Resize<============
$i++;
}
如果任何人修理它会很棒。
答案 0 :(得分:1)
你在function declaration
循环中正在while
这样做......
$count = count($_FILES['files']['name']);
$i = 0;
while($i<$count)
{
move_uploaded_file($_FILES["files"]["tmp_name"][$i],"uploaded_files/" . $_FILES["files"]["name"][$i]);
//===========>Image Resize<=============
$source_photo = 'uploaded_files/'. $_FILES["files"]["name"][$i];
$dest_photo = 'uploaded_files/'.$id.'_'.$i.'jpg';
//$d has some defined velue
$d = createthumb($source_photo, $dest_photo, 400, 400);
//===========>Image Resize<============
$i++;
}
function createthumb($name,$filename,$new_w,$new_h)
{
// function defination
}
答案 1 :(得分:0)
错误消息“无法重新声明createthumb()”,因为函数createthumb
声明位于while循环内。你能把它移到循环外面吗?
答案 2 :(得分:0)
尝试将create_thumb()函数声明移动到脚本的顶部/底部 - 就像你在while循环中一样,我想它正试图在第二次迭代时重新声明该函数,这是失败的。
修改强>
这一行还有一个错误:
$dest_photo = 'uploaded_files/'.$id.'_'.$i.'jpg';
$ id尚未在任何地方定义,并且应该有一个额外的“。”在'jpg'前面正确设置扩展名。尝试类似:
$dest_photo = 'uploaded_files/thumb.jpg';
应该有效。如果上传的文件是GIF / PNG /等,您只需要做一些额外的逻辑来更改扩展名。