Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.7570
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 11.04.2014, 04:53   #1
klim
Senior Member
 
Аватар для klim
 
Регистрация: 12.01.2009
Сообщений: 364
Бабло: $85975
По умолчанию PHP - как склеить картинки в скринлист

Наподобие скринлистов для видео - 7х7, 6х9 и т.п.
Все изображения одинакового размера.
GD, imagemagic - не разбираюсь в оных совершенно.
klim вне форума  
Старый 11.04.2014, 07:06   #2
klim
Senior Member
 
Аватар для klim
 
Регистрация: 12.01.2009
Сообщений: 364
Бабло: $85975
ТС -->
автор темы ТС По умолчанию

Уже не актуально, разобрался с GD.
Скрипт на 20 строк всего вышел.
klim вне форума  
Старый 11.04.2014, 10:12   #3
DimaX
Senior Member
 
Регистрация: 19.04.2007
Сообщений: 2,272
Бабло: $294990
По умолчанию

Цитата:
Сообщение от klim Посмотреть сообщение
Уже не актуально, разобрался с GD.
Скрипт на 20 строк всего вышел.
Если решил задачу, так выложил бы тут скрипт, вдруг потом кому пригодится.
DimaX вне форума  
Старый 11.04.2014, 11:41   #4
malishka
Member
 
Аватар для malishka
 
Регистрация: 28.11.2009
Сообщений: 483
Бабло: $206055
По умолчанию

+1 ..........
__________________
И пусть судьба несправедлива - вся жизнь игра, играй красиво
malishka вне форума  
Старый 11.04.2014, 12:27   #5
klim
Senior Member
 
Аватар для klim
 
Регистрация: 12.01.2009
Сообщений: 364
Бабло: $85975
ТС -->
автор темы ТС По умолчанию

PHP код:
$images glob("img/*.jpg"); //читаем папку с изображениями
shuffle($images); //перемешиваем для вывода в случайном порядке

//нужная ширина и длина изображения
$imgWidth 120;
$imgHeight 160;
//колонки и ряды в скринлисте (кол-во images должно быть >= $rows*$cols)
$rows 3;
$cols 4;
//итоговая ширина-длина скринлиста
$bgWidth $imgWidth $cols;
$bgHeight $imgHeight $rows;

$im imagecreatetruecolor($bgWidth$bgHeight); //создаём пустой скринлист нужного размера

$f=0//первое изображение в images

//последовательно обрабатываем каждый ряд скринлиста, вставляя в нужном месте изображение 
for($j=0$j<$cols$j++){
    for(
$i=0$i<$rows$i++){
        
$src imagecreatefromjpeg($images[$f]);
        
imagecopy($im$src$j $imgWidth$i $imgHeight00$imgWidth$imgHeight);
        
$f++; //следующее изображение в images
    
}
}

//в данном случае - выводим результат в браузер
header('Content-Type: image/jpeg');
imagejpeg($im);

imagedestroy($im);
imagedestroy($src); 
klim вне форума  
Старый 12.04.2014, 23:51   #6
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию

Цитата:
Сообщение от klim Посмотреть сообщение
GD, imagemagic - не разбираюсь в оных совершенно.
если твое решение работает в динамическом php-скрипте, который дергают веб-клиенты, или на него возлагается иная высокая нагрузка, то советую поменять GD на imagemagick (для php это Imagick) или другую более производительную библиотеку. GD очень медленная и прожерливая.

Хотя, конкретно в твоем случае, где изображения только читаются и копируются, нагрузки не так много, как, например, при resize или resample, поэтому разница от смены библиотек будет не столь заметна.

У меня есть скрипт, который по крону ресайзит делает thumbnail-ы с обрезкой фона. Разница GD и Imagick примерно на 1 порядок по моим ощущениям.
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума