За последние 24 часа нас посетили 59254 программиста и 1759 роботов. Сейчас ищут 934 программиста ...

Как установить размер превьюшки фотографии без полей?

Тема в разделе "PHP для новичков", создана пользователем Volonter, 26 авг 2009.

  1. Volonter

    Volonter Активный пользователь

    С нами с:
    8 авг 2009
    Сообщения:
    68
    Симпатии:
    0
    Адрес:
    Москва
    Доброго часа уважаемые!! Подскажите пожалуйста, как задать параметры превью картинки в фотогалерее, так чтобы небыло белых полей? Тоесть если заданная ширина превьюшки- 100, чтобы в итоге эта ширина была заполнена изображением, без белых полей. Соответственно тоже самое с высотой
    на всякий случай код
    PHP:
    1.  
    2. <?php
    3. /***********************************************************************************
    4. Функция img_resize(): генерация thumbnails
    5. Параметры:
    6.   $src             - имя исходного файла
    7.   $dest            - имя генерируемого файла
    8.   $width, $height  - ширина и высота генерируемого изображения, в пикселях
    9. Необязательные параметры:
    10.   $rgb             - цвет фона, по умолчанию - белый
    11.   $quality         - качество генерируемого JPEG, по умолчанию - максимальное (100)
    12. ***********************************************************************************/
    13. function img_resize($src, $dest, $width, $height, $rgb=0x601414, $quality=95)
    14. {
    15.   if (!file_exists($src)) return false;
    16.  
    17.   $size = getimagesize($src);
    18.  
    19.   if ($size === false) return false;
    20.  
    21.   // Определяем исходный формат по MIME-информации, предоставленной
    22.   // функцией getimagesize, и выбираем соответствующую формату
    23.   // imagecreatefrom-функцию.
    24.   $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
    25.   $icfunc = "imagecreatefrom" . $format;
    26.   if (!function_exists($icfunc)) return false;
    27.  
    28.   $x_ratio = $width / $size[0];
    29.   $y_ratio = $height / $size[1];
    30.  
    31.   $ratio       = min($x_ratio, $y_ratio);
    32.   $use_x_ratio = ($x_ratio == $ratio);
    33.  
    34.   $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
    35.   $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
    36.   $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
    37.   $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
    38.  
    39.   $isrc = $icfunc($src);
    40.   $idest = imagecreatetruecolor($width, $height);
    41.  
    42.   imagefill($idest, 0, 0, $rgb);
    43.   imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
    44.     $new_width, $new_height, $size[0], $size[1]);
    45.  
    46.   imagejpeg($idest, $dest, $quality);
    47.  
    48.   imagedestroy($isrc);
    49.   imagedestroy($idest);
    50.  
    51.   return true;
    52.  
    53. }
    54. ?>
     
  2. Silicium

    Silicium Активный пользователь

    С нами с:
    1 апр 2008
    Сообщения:
    205
    Симпатии:
    0
    Адрес:
    Киев
    Покажи какая картинка получается и какие ты размеры задал, впадло экспериментировать