За последние 24 часа нас посетили 20545 программистов и 1829 роботов. Сейчас ищут 983 программиста ...

Создание превьюшек - загляните

Тема в разделе "Обработка изображений средствами PHP", создана пользователем nAgi, 24 мар 2008.

  1. nAgi

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

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

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

    С нами с:
    12 сен 2007
    Сообщения:
    43
    Симпатии:
    0
    а всё смастерил
    Вот каму нада рабочий код
    PHP:
    1.  
    2.   $size = getimagesize($pach_image); // путь до картинки
    3. echo $size[0]." -".$size[1];//её размер так на всякий случай потом убрать конечно
    4. $width=80; $height=80; // размер которы йхочу видеть на экране
    5. // расчёт
    6. $x_ratio = $width / $size[0];
    7.   $y_ratio = $height / $size[1];
    8.   $ratio       = min($x_ratio, $y_ratio);
    9.   $use_x_ratio = ($x_ratio == $ratio);
    10.   $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
    11.   $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
    12.   $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
    13.   $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
    14.  
    15. $images_content= "<img $style src=".$out[1]." width='$new_width' height='$new_height'/>";//тут вставляю новые размеры
    16. echo"".$images_content."<p class=\"first-letter\">".$introtext."</p>";// ну это вывод картинка + текст собственно , да еще обтекание картинки то слева то справа  CSS думую нет смылсла писать и так все занют
    17.  
     
  3. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    И какой смысл от такой превью, если картинка грузится целиком?
     
  4. Cron

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

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Конечно, можно. Для этого функция
    Код (Text):
    1. imagejpeg($idest, $dest, $quality);
    не должна последних двух аргументов - просто
    Код (Text):
    1. imagejpeg($idest);
    Это выведет изображение в стандартный поток вывода, а не в файл. Только надо учесть, что хедер странички должен быть соответствующим.
    Очень просто. К примеру, если надо лету слепить галерею изображений с возможность увеличения изображения до истинного размера.
     
  5. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    ещё 1 спамер :(