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]   

> Описание: PHP + GD
ALEN Модератор
Отправлено: 06 Февраля, 2011 - 14:24:22
Post Id



Участник


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


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




Просили меня написать класс, чтоб можно было на картинку прикреплять логотип, решил выложить исходник тут.

Можно указать параметр где именно накладывать логотип, доступны все 4 угла, указывать их через параметр coordinate по часовой стрелке, начало отсчета левый верхний угол: 1-верхний, левый, 2-правый, верхний, 3-нижний, правый...


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class cms_setlogo_img {
  3.  
  4. public $coordinate=4; // 1-верхний, левый, 2-правый, верхний, 3-нижний, правый...
  5. public $coord=array();
  6.  
  7. function coordinat($srcWidth, $srcHeight, $logoWidth, $logoHeight){
  8. if($this->coordinate==1){
  9. $this->coord[1]=0;
  10. $this->coord[2]=0;
  11. } elseif($this->coordinate==2){
  12. $this->coord[1]=$srcWidth - $logoWidth;
  13. $this->coord[2]=0;
  14. } elseif($this->coordinate==3){
  15. $this->coord[1]=$srcWidth - $logoWidth;
  16. $this->coord[2]=$srcHeight - $logoHeight;
  17. } else {
  18. $this->coord[1]=0;
  19. $this->coord[2]=$srcHeight - $logoHeight;
  20. }
  21. }
  22.  
  23. function load($filename) {
  24.     $image_info = getimagesize($filename);
  25.     $this->image_type=$image_info[2];
  26.     if($this->image_type == IMAGETYPE_JPEG ) {
  27.         return imagecreatefromjpeg($filename);
  28.     } elseif($this->image_type == IMAGETYPE_GIF ) {
  29.         return imagecreatefromgif($filename);
  30.     } elseif($this->image_type == IMAGETYPE_PNG ) {
  31.         return imagecreatefrompng($filename);
  32.     }
  33. }
  34.  
  35. function save($img,$srcImage) {
  36.     if($this->image_type == IMAGETYPE_JPEG ) {
  37.         ImageJPEG($srcImage, $img, 100);
  38.     } elseif($this->image_type == IMAGETYPE_GIF ) {
  39.         ImageGIF($srcImage, $img);
  40.     } elseif($this->image_type == IMAGETYPE_PNG ) {
  41.         ImagePNG($srcImage, $img);
  42.     }
  43. }
  44.  
  45.  
  46. function setlogo($img,$logosrc)
  47. {
  48.     $srcImage = $this->load($img);
  49.     $logoImage = $this->load($logosrc);
  50.  
  51.     $srcWidth  = ImageSX($srcImage);
  52.     $srcHeight = ImageSY($srcImage);
  53.  
  54.     $logoWidth  = ImageSX($logoImage);
  55.     $logoHeight = ImageSY($logoImage);
  56.  
  57.     imageAlphaBlending($logoImage, false);
  58.     imageSaveAlpha($logoImage, true);
  59.  
  60.     $trcolor = ImageColorAllocate($logoImage, 255, 255, 255);
  61.     ImageColorTransparent($logoImage , $trcolor);
  62.  
  63.     $this->coordinat($srcWidth, $srcHeight, $logoWidth, $logoHeight);
  64.     imagecopy($srcImage, $logoImage, $this->coord[1], $this->coord[2],0,0, $logoWidth, $logoHeight);
  65.  
  66.     unlink($img);
  67.  
  68.     $this->save($img,$srcImage);
  69.  
  70.     ImageDestroy($srcImage);
  71. }
  72. }



Использование:

PHP:
скопировать код в буфер обмена
  1. $imglogo=new cms_setlogo_img;
  2. $imglogo->coordinate=3; // в каком углу вставлять изображение
  3. $imglogo->setlogo("img.jpg","logo.png");


Отредактировано модератором: JustUserR, 06 Февраля, 2011 - 16:56:58
Осуществлен перенос данной темы в разделе Пользовательские функции PHP по причине включения готового решения представленного в форме ООП-библиотеки
 
 Top
DiosPA
Отправлено: 12 Февраля, 2011 - 04:43:09
Post Id



Частый гость


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


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




ALEN всё чётко спасибо будем узать Улыбка
 
 Top
ALEN Модератор
Отправлено: 07 Марта, 2011 - 01:43:55
Post Id



Участник


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


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




Более актуальный класс находится по адресу: http://forum.php.su/topic.php?fo...35&topic=736
Тема закрыта!
 
 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