2014-04-09 2 views
2

업로드 후 이미지의 크기를 변경하려고합니다. 나는 2 개의 파일 (view_project.php와 user.inc.php)을 가지고있다.
In user.inc.php 이미지를 업로드하고 업로드 된 파일의 이름을 가진 배열을 반환합니다.
view_project.php에서 배열을 가져오고 foreach에서 원래 이미지의 20 % 또는 60 % 해상도로 이미지 크기를 조정하려고합니다.Imagick은 PHP로 크기를 조정합니다.

절대 작동하지 않습니다. 이미지는 서버에 업로드되지만 크기는 조정되지 않습니다.

foreach($upload as $images_to_resize) { 
     $file = ''.showConfigValues("img_source_admin").'/'.$images_to_resize; 

     $src = realpath($file); 
     $dst = realpath($file); 
     $crop = false; 

     list($old_w,$old_h) = getimagesize($file); 

     if($old_w >= 1700 && $old_h >= 900) { 

     $w = floor(($old_w/100) * 20); 
     $h = floor(($old_h/100) * 20); 
     } 
     else { 
     $w = floor(($old_w/100) * 60); 
     $h = floor(($old_h/100) * 60); 
     } 
      $picture = new Imagick($src); 

      $picture->setImageResolution(300,300); 
      autoRotateImage($picture); 
      $picture->resizeImage(684, 457, Imagick::FILTER_LANCZOS,1, false); 
      $picture->writeImage($cropped); 
      $picture->clear(); 
      $picture->destroy(); 

    } 

정말 도움이 필요합니다. 감사합니다

답변

0

이것은 쉬운 일일 수 있습니다 : "$ 자른"을 정의한 곳이 보이지 않습니다.

변수를 정의해야하며 배열의 각 이미지에 대해 고유 한 값이어야하며 파일 확장명도 포함해야합니다. 예를 들면 다음과 같습니다.

foreach($upload as $key => $images_to_resize) { 
    $fileName = $_FILES["upload"]["tmp_name"][$key] 
    $cropped = 'resized_'.$fileName; 
    ... 
    $picture->writeImage($cropped.'.jpg'); 
    ... 

$ _FILES 배열에서 임시 파일 이름을 가져 와서 재사용하도록 foreach에 $ key를 추가했습니다.

autorotate 명령은 절대로 사용하지 않지만 개체 형식에 맞지 않는 것처럼 보입니다. 시도 :

$picture->autoRotateImage($picture); 

을 당신은 또한 ImageMagick이 설치 및 PHP는 플러그인을 테스트 할 수 있습니다 :

Verify ImageMagick installation

관련 문제