2013-07-08 3 views
0

Я пытаюсь создать систему загрузки изображений, но столкнулся с проблемой. Система загружает вставленное изображение и создает миниатюру.Загрузить сценарий, обрезание/измельчение миниатюр

Пользователь имеет право указывать ширину и высоту эскизов. Когда изображение позволяет сказать 200px на 100px, и пользователь сказал, что ширина эскиза будет 10px, а высота - 20px, система должна растянуть изображение, которое я не хочу. Я хочу, чтобы система расколола часть изображения с помощью функции Imagick, чтобы получить нормальный эскиз и изображение, когда изображение проходит через скрипт.

Эта функция используется следующим образом:

chopImage (width of the chopped area , height of the chopped area , x coordinate of topleft corner of chopped area , y coordinate of topleft corner of chopped area) 

Стандартные конфигурации системы загрузкой данных PHP:

$image = $_FILES["image"]["name"]; 
      $imgtemp = $_FILES["image"]["tmp_name"]; 
      $imgtype = $_FILES["image"]["type"]; 
      $imgsize = $_FILES["image"]["size"];  

if(!$image){ 
     if($image_enabled ==2){ 
      $errors[] = "You didn't selected an image to upload"; 
      } 
     } else { 
    if($imgtype == 'image/jpeg'){ $filetype= '.jpg'; }else{ $filetype= str_replace ('image/', '', $imgtype); } 

    $path= 'images/' . md5(rand(0, 1000) . rand(0, 1000) . rand(0, 1000) . rand(0, 1000)) . '.jpg'; 
    $thumb_path= 'images/thumb_' . md5(rand(0, 1000) . rand(0, 1000) . rand(0, 1000) . rand(0, 1000)) . '.jpg'; 
    $imgsize2= getimagesize($imgtemp); 
    $width= $imgsize2[0]; 
    $height= $imgsize2[1]; 

    $maxwidth= 1281; 
    $maxheight= 721; 
    $allowed= array('image/png', 'image/jpeg', 'image/gif',); 

    if(in_array($imgtype, $allowed)){ 

     if($width < $maxwidth && $height < $maxheight){ 

     if($imgsize < 5242880){ 

Часть Я stucked с:

    if(!isEmpty($image_thumbheight) || !isEmpty($image_thumbwidth)){ 

         switch($imgtype){ 
          case 'image/gif'; 
          $img= imagecreatefromgif($imgtemp); 
          $img_thumb= imagecreatefromgif($thumb); 
         header("Content-type: image/gif"); 
     $image_crop = new Imagick("$image"); 
     $image_crop->cropImage($image_thumbwidth,$image_thumbheight, 0,$height); 
     $image_crop->writeImage($thumb); 
     imagegif($thumb, $thumb_path); 
     break; 

         case 'image/png'; 
          $img= imagecreatefrompng($imgtemp); 

         header("Content-type: image/png"); 
     $image_crop = new Imagick("$imgtemp"); 
     $image_crop->chopImage($image_thumbwidth,$image_thumbheight, 0,$height); 
     $image_crop->writeImage($thumb); 
     imagepng($thumb, $thumb_path); 
     break; 
     case 'image/jpeg'; 
          $img= imagecreatefromjpeg($imgtemp); 
          $img_thumb= imagecreatefromjpeg($thumb); 
         header("Content-type: image/jpeg"); 
     $image_crop = new Imagick("$image"); 
     $image_crop->chopImage($image_thumbwidth,$image_thumbheight, 0,$height); 
     $image_crop->writeImage($thumb_path); 
     imagejpeg($thumb, $thumb_path); 
     break; 
         } 

       move_uploaded_file($imgtemp, $path); 
       echo "Image is successfully uploaded."; 
         } 

Когда я запускаю это скрипт только загружает нормальное изображение. Миниатюра не загружается. Функция imagick не используется очень часто, я считаю, потому что не мог найти загрузочные учебники в Интернете с использованием функции imagick. Может кто-нибудь помочь мне?

ответ

0

Ваш код выглядит немного смущенным ... это работает, как вы ожидаете?

if(!isEmpty($image_thumbheight) || !isEmpty($image_thumbwidth)){ 
    $image_crop = new Imagick($imgtmp); 
    $image_crop->cropImage($image_thumbwidth, $image_thumbheight, 0, $height); 
    $image_crop->writeImage($thumb_path); 

    move_uploaded_file($imgtemp, $path); 
    echo "Image is successfully uploaded."; 
}