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]   

> Без описания
gheka
Отправлено: 07 Октября, 2014 - 22:22:27
Post Id



Частый гость


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


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




Здравствуйте хочу наложить на картинку прозрачный логотип чтобы на картинке просвечивался логотип сайта

Делаю это так.

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $main_image = imagecreatefromjpeg( 'test.jpg' );
  4. $logo_image = imagecreatefrompng( 'water.png' );
  5.  
  6. imagecopy( $main_image, $logo_image, 200, 0, 0, 0, 600, 600 );
  7.  
  8. header('Content-type: image/jpeg');
  9. imagejpeg( $main_image );
  10. imagedestroy( $main_image );
  11. imagedestroy( $main_image );
  12.  
  13.  


Но при этом изображение получается не совсем как нужно. Дело в том что логотип по размерам меньше чем основное изображение.
Допустим
main_image - width = 600 px
main_image - height = 600 px

logo_image - width = 600 px
logo_image - height = 100 px

И получается так что где именно наложен логотип основная картинка видна, а то что за ходит за границы размера логотипа отображается чёрным цветом

Почему так происходит и как это исправить?

(Отредактировано автором: 07 Октября, 2014 - 22:23:41)

 
 Top
3d_killer
Отправлено: 07 Октября, 2014 - 22:29:11
Post Id



Участник


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


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




PHP:
скопировать код в буфер обмена
  1. $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127);
  2. imagefill($img, 0, 0, $transparent);
  3. imagesavealpha($img, true);

(Добавление)
после этого imagecopy
 
My status
 Top
gheka
Отправлено: 07 Октября, 2014 - 22:47:08
Post Id



Частый гость


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


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




3d_killer пишет:
PHP:
скопировать код в буфер обмена
  1. $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127);
  2. imagefill($img, 0, 0, $transparent);
  3. imagesavealpha($img, true);

(Добавление)
после этого imagecopy


Спасибо но не могли бы вы как то показать куда именно нужно вставить ваши функции в мой код.
PHP:
скопировать код в буфер обмена
  1.  
  2. $main_image = imagecreatefromjpeg( 'test.jpg' );
  3. $logo_image = imagecreatefrompng( 'water.png' );
  4.  
  5. imagecopy( $main_image, $logo_image, 200, 0, 0, 0, 600, 600 );
  6.  
  7. header('Content-type: image/jpeg');
  8. imagejpeg( $main_image );
  9. imagedestroy( $main_image );
  10. imagedestroy( $main_image );
  11.  
 
 Top
3d_killer
Отправлено: 07 Октября, 2014 - 22:51:15
Post Id



Участник


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


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




это делается если оригинал png, прикрепите пример изображения что получается
 
My status
 Top
gheka
Отправлено: 07 Октября, 2014 - 23:00:46
Post Id



Частый гость


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


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




3d_killer пишет:
это делается если оригинал png, прикрепите пример изображения что получается


(Добавление)

Вот что получается в моём случаее

(Отредактировано автором: 07 Октября, 2014 - 23:02:58)

 
 Top
3d_killer
Отправлено: 08 Октября, 2014 - 08:13:26
Post Id



Участник


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


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




вот функция раньше пользовался:
PHP:
скопировать код в буфер обмена
  1.  
  2. //Ставим водяной знак
  3. function watermark($img_o,$type,$watermark_o)
  4.         {
  5.           //Наложим водяной знак на большую картинку
  6.           $func = 'imagecreatefrom'.$type;
  7.         $img = $func($img_o);
  8.                 $func2='image'.$type;                                                                                                          
  9.                 $img_width     = imagesx($img);
  10.                 $img_height     = imagesy($img);        
  11.                 //if ($img_width>80 && $img_height> 30) {$watermark = imagecreatefrompng('../../../img/watermark_75x10.png');$inst_watermark=true;}
  12.                 $watermark = imagecreatefrompng($watermark_o);
  13.                 // Сохраняем прозрачность
  14.                 if($type == 'png'){
  15.                 $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127);
  16.                 imagefill($img, 0, 0, $transparent);
  17.                 imagesavealpha($img, true);
  18.             }
  19.                 // получаем значения высоты и ширины водяного знака
  20.                 $watermark_width     = imagesx($watermark);
  21.                 $watermark_height     = imagesy($watermark);
  22.                 // Координаты, куда помещать водяной знак
  23.                 $dest_x = $img_width  - $watermark_width  - 5;
  24.                 $dest_y = $img_height - $watermark_height - 40;
  25.                 //добавляем водяной знак
  26.                 if ($dest_x>0 && $dest_y>0)
  27.                 {
  28.                         imagecopy($img, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
  29.                         $func2($img,$img_o);
  30.                 }
  31.                 if ($img) {imagedestroy($img);}
  32.                 if ($watermark) {imagedestroy($watermark);}
  33.                 //Конец добавления водяного зняка для большого файла   
  34.         }
  35.  
 
My status
 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