как создать превью отметив определённый учасок изображения

Discussion in 'PHP' started by Sharky, 7 Jul 2009.

  1. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    как создать превью отметив определённый учасок изображения
     
  2. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <?php
    // картинка - http://ru.php.net/images/php.gif
    /* Вырезаем нужную часть */
    $src imagecreatefromgif('php.gif');
    $dest imagecreatetruecolor(8040);
    imagecopy($dest$src0020138040);
    imagegif($dest"php1.gif");
    imagedestroy($dest);
    imagedestroy($src);
    /* Делаем ресайз вырезанной части */
    resize("php1.gif"60"php2.gif"); // Результат в php2.gif
    unlink('php1.gif'); // Удаляем промежуточный результат
    echo "Result in php2.gif";
    // Функция для ресайза
    function resize($img$thumb_width$newfilename

      
    $max_width=$thumb_width;
      if (!
    extension_loaded('gd') && !extension_loaded('gd2')){
            
    trigger_error("GD is not loaded"E_USER_WARNING);
            return 
    false;
      }
      list(
    $width_orig$height_orig$image_type) = getimagesize($img);
      switch (
    $image_type) {
            case 
    1$im imagecreatefromgif($img); break;
            case 
    2$im imagecreatefromjpeg($img);  break;
            case 
    3$im imagecreatefrompng($img); break;
            default:  
    trigger_error('Unsupported filetype!'E_USER_WARNING);  break;
      }
      
    $aspect_ratio = (float) $height_orig $width_orig;
      
    $thumb_height round($thumb_width $aspect_ratio);
      while(
    $thumb_height>$max_width){
            
    $thumb_width-=10;
            
    $thumb_height round($thumb_width $aspect_ratio);
      }
      
    $newImg imagecreatetruecolor($thumb_width$thumb_height);
      if((
    $image_type == 1) OR ($image_type==3)) {
            
    imagealphablending($newImgfalse);
            
    imagesavealpha($newImg,true);
            
    $transparent imagecolorallocatealpha($newImg255255255127);
            
    imagefilledrectangle($newImg00$thumb_width$thumb_height$transparent);
      }
      
    imagecopyresampled($newImg$im0000$thumb_width$thumb_height$width_orig$height_orig);
      switch (
    $image_type) {
            case 
    1imagegif($newImg,$newfilename); break;
            case 
    2imagejpeg($newImg,$newfilename);  break;
            case 
    3imagepng($newImg,$newfilename); break;
            default:  
    trigger_error('Failed resize image!'E_USER_WARNING);  break;
      }
      return 
    $newfilename;
    }
    ?>
     
    #2 Pashkela, 7 Jul 2009
    Last edited: 7 Jul 2009
  3. Andres

    Andres Elder - Старейшина

    Joined:
    4 Apr 2008
    Messages:
    320
    Likes Received:
    119
    Reputations:
    0
    Это типа так? - http://ruseller.com/lessons/les315/example/index.php
     
  4. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    именно
     
  5. Andres

    Andres Elder - Старейшина

    Joined:
    4 Apr 2008
    Messages:
    320
    Likes Received:
    119
    Reputations:
    0
    3 people like this.
  6. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    очень просто:

    1. Создаем такой .html-файл прямо на рабочем столе в винде, назовем его к примеру image.html

    где ava1.jpg - наша картинко, поменяйте название на ваше в двух местах в коде. Саму картинку тоже просто положите на рабочий стол

    2. Создаем файл jquery.js, тоже прямо на рабочем столе

    3. Создаем файл imgareaselect.js - так же прямо на рабочем столе


    Усё. Запускаем наш image.html (открываем в браузере) и тащимся:) остальное детали уже

    Весь код всех js сюда не влазит:)) Поэтому всё готовое в одном архиве:

    скачать
     
    1 person likes this.
  7. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    я хз почему но у меня эта хрень с большими картинками не канает.
     
    _________________________
  8. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    попробуй конфиг поправить


    ещё попрос...как бы это это реализовать без перезагрузки страницы?