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]   

> Без описания
Foster
Отправлено: 04 Ноября, 2012 - 11:35:54
Post Id


Новичок


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


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




Здраствуйте, столкнулся с проблемой: не могу из 10-20 маленьких картинок создать одну большую - тоесть скринлист (thumbnail). В сети нашёл решения которые позволяют только уменьшать изображения до указанного размера, мне же нужно склеить между собой все маленькие изображения в одно большое(цельное) изображение. Есть 1 нюанс, высота и ширина картинок может быть различной.

PHP:
скопировать код в буфер обмена
  1. $x=count($news['screen']); // Считаем кол-во картинок(ссылок на них)
  2.  
  3.  
  4.       $im2=imagecreatetruecolor(1280,1024); // задаем размер холста.
  5.       for($i=0;$i<$x;$i++)
  6.       {
  7. // Открываем каждое изображение по ссылке
  8.          $curl = curl_init();
  9.          curl_setopt($curl, CURLOPT_URL, str_replace(" ", "%20", $news['screen'][$i]));
  10.          curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  11.          curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  12.          curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
  13.          curl_setopt($curl, CURLOPT_ENCODING,'gzip,deflate');
  14.          curl_setopt($curl, CURLOPT_COOKIE, $cookie);
  15.          curl_setopt($curl, CURLOPT_PROXY, $proxy);
  16.          curl_setopt($curl, CURLOPT_PROXYUSERPWD, $auth);
  17.          $res = curl_exec($curl);
  18.          curl_close($curl);
  19.          file_put_contents('tmp.img', $res);
  20. // Далее склеиваем картинки между собой, по 5 штук в ширину, после чего переходим в нижнюю "строку".
  21.  
  22.          $im1=imagecreatefromjpeg('tmp.img');
  23.          $size_x=imageSX($im1);
  24.          $size_y=imageSY($im1);
  25.  
  26.          if($i% 5 === 0){$d=0; if($i !==0){$n++;}  } else{$d++;}
  27.          imageCopy($im2,$im1,$size_x*$d,$size_y*$n,0,0,$size_x,$size_y);
  28.       }
  29.       imagejpeg($im2, "2.jpeg");
  30.       unlink('tmp.img');


Проблема в том, что иногда картинки имеют разную высоту\ширину.
И если раньше, когда размер у всех картинок был одинаков и проблем с созданием скрин-листов не было, то сейчас получается вот так http://funkyimg[dot]com/u2/2614/133/6593102[dot]jpeg - ВНИМАНИЕ ССЫЛКАСОДЕРЖИТ АДАЛТМАТЕРИАЛ!

(Отредактировано автором: 04 Ноября, 2012 - 13:44:08)

 
 Top
Foster
Отправлено: 05 Ноября, 2012 - 17:11:32
Post Id


Новичок


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


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




Ребят, помогите пожалуста, вопрос наложения картинок друг на друга решил, но теперь не могу понять как избавиться от расстояния по оси "х" между первой и второй картинками

CODE (text):
скопировать код в буфер обмена
  1. //склеиваем
  2.                         $x=7;
  3.                         $n=$d=$size_x_total=0;
  4.                         $bool=true;
  5.                         $im2=imagecreatetruecolor(1280,1024); // задаем размер холста.
  6.                         for($i=0;$i<$x;$i++)
  7.                         {
  8.                                
  9.                                 $im1=imagecreatefromjpeg('./img/'.$i.'.jpg');
  10.                                 $size_x=imageSX($im1); $size_x_total=$size_x+$size_x_total;
  11.                                 $size_y=imageSY($im1);
  12.                
  13.                                 if($size_x_total <= 1280){if($bool){$size_x_total=0; $bool=false;}  } else{$n++; $size_x_total=0; $bool=true;}
  14.  
  15.                                 imageCopy($im2,$im1,$size_x_total,$size_y*$n,0,0,$size_x,$size_y);
  16.                                 echo $size_x_total."<br>";
  17.                         }
  18.                         //$file_list = glob("./img/*.jpg");
  19.                         imagejpeg($im2, "2.jpeg");

Исходник с картинками тут http://zalil[dot]ru/33928649
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Графика в PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB