2013-12-18 3 views
0

이미지의 크기를 조정하려고합니다. 그것은 단일 이미지로 잘 작동합니다. 하지만 다중 이미지를 사용하려면 이미지를 하나씩 가져 오기 위해 루프를 사용해야합니다. createthumb()을 재 선언 할 수 없습니다 아래업로드시 복수 이미지의 크기를 조정하고 이름을 바꿉니다.

는 PHP

인덱스

HTML

<input id="files" name="files[]" multiple="multiple" accept="image/*" type="file"> 

내 코드입니다 :

나는 오류 ==>를 치명적인 오류가 무엇입니까

$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

함수 createthumb 선언이 while 루프 안에 있기 때문에 "can not redeclare createthumb()"오류 메시지가 표시됩니다. 루프 바깥으로 옮겨 주시겠습니까?

+0

...과 같이 수행 (조건) {다른 코드 $의 D = createthumb의 ($ source_photo, $의 dest_photo, 400, 400); } function createthumb ($ name, $ filename, $ new_w, $ new_h) {code} –

+0

외부로 이동할 때 오류 메시지에 무엇이 표시됩니까? – ChunLin

+0

최고 작품! 하단에 오류가 표시됩니다 –

0

create_thumb() 함수 선언을 스크립트의 맨 위/맨 아래로 이동하십시오. while 루프 안에있는 것처럼 스크립트가 실패한 두 번째 반복에서 함수를 다시 선언하려고합니다.

편집

이 라인에 오류도 있습니다 "."

$dest_photo = 'uploaded_files/'.$id.'_'.$i.'jpg'; 

$ ID가 어디 정의되지 않았으며, 추가가 있어야이 확장 기능을 올바르게 설정하려면 'jpg'앞에 추가하십시오. 다음과 같이 시도하십시오 :

$dest_photo = 'uploaded_files/thumb.jpg'; 

작동해야합니다. 업로드 된 파일이 GIF/PNG/등인 경우 확장을 변경하기 위해 추가 로직을 수행하면됩니다.

+0

오! 그게 잘 작동하지만 내 요구를 충족시키지 못한다. 빈 광석 이미지를 보여주고있다. –

+0

내 대답이 업데이트되었으므로 도움이된다. – Melkior

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   
} 
관련 문제