Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Генерация превьюшек

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
valenok Модератор
Отправлено: 14 Апреля, 2007 - 13:40:53
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




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=0xFFFFFF, $quality=100)
  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. ?>
  55.  

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.   require ('imgresize.php');
  5.   if (img_resize('original.jpg', 'small.jpg', 100, 60))
  6.     echo 'Image resized OK';
  7.   else
  8.     echo 'Resize failed!';
  9.  
  10. ?>
  11.  

http://www.php5[dot]ru/articles/image#size






Также я использовал для пропорционального уменьшения картинки следующий код:
Уменьшает изображение сохраняя пропорцию между шириной и высотой
до размера при котором либо ширина либо высота окажутся 100 пикселей.
PHP:
скопировать код в буфер обмена
  1.  
  2. list($width, $height, $type, $attr) = getimagesize($img);
  3.         if($width > $height) $dif = $width / 100; $width = 100; $height = $height / $dif;
  4.         else $dif = $height / 100; $height = 100; $width = $width / $dif;
  5. echo "< img src='".$img."' width = '".$width."' height='".$height."' />";
  6.  


-----
Truly yours, Sasha.
 
My status
 Top
kamikadze
Отправлено: 30 Апреля, 2007 - 19:08:58
Post Id



Склонен к самоубийству


Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007  


Помог: 0 раз(а)




Можно еще функций для картинок, например случайный вывод из каталога, или фотогалерею даже =)
 
 Top
D1mOn
Отправлено: 05 Апреля, 2008 - 15:01:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Про код Valenka: А вот можно так, чтобы файл не сохранялся на хард, т.е. был "одноразовым"?
 
 Top
SjayLiFe
Отправлено: 05 Декабря, 2011 - 00:35:18
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




А как это прикрутить к фотохостингу chereveto???
 
 Top
ALEN Модератор
Отправлено: 28 Декабря, 2011 - 17:06:46
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




http://forum.php.su/topic.php?fo...35&topic=736 - есть еще более красивые варианты и не только на GD
 
 Top
Annet_Li
Отправлено: 27 Августа, 2013 - 13:46:08
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Здравствуйте!
Заранее извиняюсь за глупый вопрос, я немножко запуталась.. ??? Непонял!
Что должно быть указано в $src и $dest?
Если $src = GW_UPLOADPATH . $photo, то как должно выглядеть имя генерируемого файла?
 
 Top
Zuldek
Отправлено: 27 Августа, 2013 - 13:50:56
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Цитата:
$src = GW_UPLOADPATH . $photo

$src должна содержать полный путь к файлу от корня сервера.
Пример возможного значения: "/M/sitehost/htdocs/images/photo.jpg"

На самом деле, указанные функции для генерации использовать не рекомендую, как и либу gd вообще. Может подойти для генерации уменьшенных копий одного загруженного изображения и то будет накладно. Лучше обрезать не средствами пыхи, а, допустим imagemagick. Будет в разы быстрее и экономичнее по ресурсам, особенно если нужно ресайзить большое количество картинок

(Отредактировано автором: 27 Августа, 2013 - 13:52:25)

 
 Top
Annet_Li
Отправлено: 27 Августа, 2013 - 14:04:42
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Я потому и путаюсь с указанием полного пути, так как хочу, чтобы это работало для каждого загружаемого изображения..
Спасибо за ответ и за совет по поводу imagemagick.
Попробую теперь разобраться с нимУлыбка
 
 Top
Annet_Li
Отправлено: 27 Августа, 2013 - 17:36:23
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Возник сходный глупый вопрос..
Установила ImageMagick, нашла скрипт для уменьшения размера изображения:

$ convert -quality 90 -resize 640x640 большое-фото.jpg уменьшенное-фото.jpg

Но опять же не могу понять, как написать имя изображений, чтобы работало для всех загруженных.
Нужно создавать массив имен изображений?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB