2010-08-19 8 views
1

도대체 무슨 일인지 잘 모르시겠습니까 ?? 그러나 라거 (lager) 사진 (세로) 스타일을 업로드했다면, 그것을 잘라서 회전시킵니다. 나는 무엇이 없는가. max_width를 갖고 비율이 나머지를하도록하는 것이 좋을까요 ?? 미리 감사드립니다. 당신은 업로드 할 이미지가 제대로 방향을 향하게됩니다왜 내 그림이이 스크립트로 회전됩니까?

<?php 
    function uploadImage($fileName, $maxSize, $maxW, $fullPath, $relPath, $colorR, $colorG, $colorB, $maxH = null){ 
     $folder = $relPath; 
     $maxlimit = $maxSize; 
     $allowed_ext = "jpg,jpeg"; 
     $match = ""; 
     $filesize = $_FILES[$fileName]['size']; 
     if($filesize > 0){ 
      $filename = strtolower($_FILES[$fileName]['name']); 
      $filename = preg_replace('/\s/', '_', $filename); 
      if($filesize < 1){ 
       $errorList[] = "File size is empty or too big"; 
      } 
      if($filesize > $maxlimit){ 
       $errorList[] = "File size is too big."; 
      } 
      if(count($errorList)<1){ 
       $file_ext = preg_split("/\./",$filename); 
       $allowed_ext = preg_split("/\,/",$allowed_ext); 
       foreach($allowed_ext as $ext){ 
        if($ext==end($file_ext)){ 
         $match = "1"; // File is allowed 
         $NUM = time(); 
         $front_name = substr($file_ext[0], 0, 15); 
         $newfilename = $front_name."_".$NUM.".".end($file_ext); 
         $filetype = end($file_ext); 
         $save = $folder.$newfilename; 
         if(!file_exists($save)){ 
          list($width_orig, $height_orig) = getimagesize($_FILES[$fileName]['tmp_name']); 
          if($maxH == null){ 
           if($width_orig < $maxW){ 
            $fwidth = $width_orig; 
           }else{ 
            $fwidth = $maxW; 
           } 
           $ratio_orig = $width_orig/$height_orig; 
           $fheight = $fwidth/$ratio_orig; 

           $blank_height = $fheight; 
           $top_offset = 0; 

          }else{ 
           if($width_orig <= $maxW && $height_orig <= $maxH){ 
            $fheight = $height_orig; 
            $fwidth = $width_orig; 
           }else{ 
            if($width_orig > $maxW){ 
             $ratio = ($width_orig/$maxW); 
             $fwidth = $maxW; 
             $fheight = ($height_orig/$ratio); 
             if($fheight > $maxH){ 
              $ratio = ($fheight/$maxH); 
              $fheight = $maxH; 
              $fwidth = ($fwidth/$ratio); 
             } 
            } 
            if($height_orig > $maxH){ 
             $ratio = ($height_orig/$maxH); 
             $fheight = $maxH; 
             $fwidth = ($width_orig/$ratio); 
             if($fwidth > $maxW){ 
              $ratio = ($fwidth/$maxW); 
              $fwidth = $maxW; 
              $fheight = ($fheight/$ratio); 
             } 
            } 
           } 
           if($fheight == 0 || $fwidth == 0 || $height_orig == 0 || $width_orig == 0){ 
            die("FATAL ERROR REPORT ERROR CODE [add-pic-line-67-orig] to <a href='http://www.atwebresults.com'>AT WEB RESULTS</a>"); 
           } 
           if($fheight < 45){ 
            $blank_height = 45; 
            $top_offset = round(($blank_height - $fheight)/2); 
           }else{ 
            $blank_height = $fheight; 
           } 
          } 
          $image_p = imagecreatetruecolor($fwidth, $blank_height); 
          $white = imagecolorallocate($image_p, $colorR, $colorG, $colorB); 
          imagefill($image_p, 0, 0, $white); 
          switch($filetype){ 
           case "gif": 
            $image = @imagecreatefromgif($_FILES[$fileName]['tmp_name']); 
           break; 
           case "jpg": 
            $image = @imagecreatefromjpeg($_FILES[$fileName]['tmp_name']); 
           break; 
           case "jpeg": 
            $image = @imagecreatefromjpeg($_FILES[$fileName]['tmp_name']); 
           break; 
           case "png": 
            $image = @imagecreatefrompng($_FILES[$fileName]['tmp_name']); 
           break; 
          } 
          @imagecopyresampled($image_p, $image, 0, $top_offset, 0, 0, $fwidth, $fheight, $width_orig, $height_orig); 
          switch($filetype){ 
           case "gif": 
            if([email protected]($image_p, $save)){ 
             $errorList[]= "PERMISSION DENIED [GIF]"; 
            } 
           break; 
           case "jpg": 
            if([email protected]($image_p, $save, 100)){ 
             $errorList[]= "PERMISSION DENIED [JPG]"; 
            } 
           break; 
           case "jpeg": 
            if([email protected]($image_p, $save, 100)){ 
             $errorList[]= "PERMISSION DENIED [JPEG]"; 
            } 
           break; 
           case "png": 
            if([email protected]($image_p, $save, 0)){ 
             $errorList[]= "PERMISSION DENIED [PNG]"; 
            } 
           break; 
          } 
          @imagedestroy($filename); 
         }else{ 
          $errorList[]= "CANNOT MAKE IMAGE IT ALREADY EXISTS"; 
         } 
        } 
       }  
      } 
     }else{ 
      $errorList[]= "NO FILE SELECTED"; 
     } 
     if(!$match){ 
      $errorList[]= "File type isn't allowed (ONLY JPG or JPEG) : $filename"; 
     } 
     if(sizeof($errorList) == 0){ 
      return $fullPath.$newfilename; 
     }else{ 
      $eMessage = array(); 
      for ($x=0; $x<sizeof($errorList); $x++){ 
       $eMessage[] = $errorList[$x]; 
      } 
      return $eMessage; 
     } 
    } 

    $filename = strip_tags($_REQUEST['filename']); 
    $maxSize = strip_tags($_REQUEST['maxSize']); 
    $maxW = strip_tags($_REQUEST['maxW']); 
    $fullPath = strip_tags($_REQUEST['fullPath']); 
    $relPath = strip_tags($_REQUEST['relPath']); 
    $colorR = strip_tags($_REQUEST['colorR']); 
    $colorG = strip_tags($_REQUEST['colorG']); 
    $colorB = strip_tags($_REQUEST['colorB']); 
    $maxH = strip_tags($_REQUEST['maxH']); 
    $filesize_image = $_FILES[$filename]['size']; 
    if($filesize_image > 0){ 
     $upload_image = uploadImage($filename, $maxSize, $maxW, $fullPath, $relPath, $colorR, $colorG, $colorB, $maxH); 
     if(is_array($upload_image)){ 
      foreach($upload_image as $key => $value) { 
       if($value == "-ERROR-") { 
        unset($upload_image[$key]); 
       } 
      } 
      $document = array_values($upload_image); 
      for ($x=0; $x<sizeof($document); $x++){ 
       $errorList[] = $document[$x]; 
      } 
      $imgUploaded = false; 
     }else{ 
      $imgUploaded = true; 
     } 
    }else{ 
     $imgUploaded = false; 
     $errorList[] = "File Size Empty"; 
    } 
?> 
<?php 
    if($imgUploaded){ 
     echo '<img src="/eb_admin/images/success.gif" width="16" height="16" border="0" style="margin-bottom: -4px;" /> Success!<br /><img src="'.$upload_image.'" border="0" /><input type="hidden" name="full_story" value="'.$upload_image.'" />'; 
    }else{ 
     echo '<img src="/eb_admin/images/error.gif" width="16" height="16px" border="0" style="margin-bottom: -3px;" /> Error(s) Found: '; 
     foreach($errorList as $value){ 
       echo $value.', '; 
     } 
    } 
?> 

답변

0

확인합니다. 잘못된 방향으로있을 수있는 삽입 된 미리보기 이미지를 보지 마십시오. 일부 이미지는 내부적으로 회전 플래그를 설정할 수도 있으므로 제대로 표시되지만 실제로는 회전 된 형식으로 저장됩니다. GD는 원본 사진 데이터에서 벗어나 이러한 플래그를 무시합니다.

그렇지 않으면 아무 것도 분명히 코드에 잘못 표시됩니다. 하지만 getimagesize() 호출을 resize 블록 외부에 배치하여 초기 오류 검사의 일부로 만들 것입니다. 지금은 이미지를 읽거나로드 할 수 있다고 가정하고 있습니다. 이미지를 읽을 수 없으면 getimagesize는 false를 반환하고 나중에 작업을 저장할 수 있습니다.

코멘트 추적 :

을 여기 어딘가에 :

if($filesize > $maxlimit){ 
    $errorList[] = "File size is too big."; 
} 

// put it here 
list($width_orig, $height_orig) = getimagesize($_FILES[$fileName]['tmp_name']); 

// additional error check 
if ($width === FALSE) { 
    $errorList[] = "Could not read image"; 
} 

if(count($errorList)<1){ 
    etc... 
    // and when it comes time to actually use the width_orig/height_orig later in this 
    // block, they're already set from the earlier getimagesize() call 
+0

달콤한! 제안에 감사드립니다! – eberswine

+0

음 ... 어디서 getimagesize()를 넣을까요 ?? 아래 또는 위 ?? – eberswine

관련 문제