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
Форумы портала PHP.SU :: Версия для печати :: Класс наложения логотипа на изображение
Форумы портала PHP.SU » PHP » Пользовательские функции » Класс наложения логотипа на изображение

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

1. ALEN - 06 Февраля, 2011 - 14:24:22 - перейти к сообщению
Просили меня написать класс, чтоб можно было на картинку прикреплять логотип, решил выложить исходник тут.

Можно указать параметр где именно накладывать логотип, доступны все 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");
2. DiosPA - 12 Февраля, 2011 - 04:43:09 - перейти к сообщению
ALEN всё чётко спасибо будем узать Улыбка
3. ALEN - 07 Марта, 2011 - 01:43:55 - перейти к сообщению
Более актуальный класс находится по адресу: http://forum.php.su/topic.php?fo...35&topic=736

 

Powered by ExBB FM 1.0 RC1