Главная » Скрипты для uCoz » PHP Скрипты для ucoz » Использование водяных знаков

Использование водяных знаков

·
В этом примере демонстрируется как с помощью php-скриптов создавать изображения с водяными знаками (watermark). Скрипт выводит на странице оригинальное изобрадение и это же изображение с водяным знаком. Для выполнения данного действия скрипт использует функции графической бибилиотеки GD. Исходный код данного примера приведен ниже.
В шаблоне страницы:
Code
<div align="center">
  


  <b>Данный пример демонстрирует использование скрипта для создания изображений с водяными знаками</b>
  </p>
</div>
<hr>
<?$PHPCODE$("http://phpexample.ucoz.net/php/example004/example004.php")?>

PHP скрипты примера:

example004.php:

Code
<b>Исходное изображение:</b><br><hr>
<center><img src="http://phpexample.ucoz.net/php/example004/image.php?main=main.jpg"></center><br><hr>
<b>Изображение с водяным знаком:</b><br><hr>
<center><img src="http://phpexample.ucoz.net/php/example004/image.php?main=main.jpg&watermark=watermark.png"></center><br><hr>

image.php:
Code
<?
  $___notjson=1;
  include 'api.watermark.php';
  $watermark = new watermark();
  $main_img_obj = imagecreatefromjpeg($_GET['main']);
  $watermark_img_obj = imagecreatefrompng($_GET['watermark']);
  $return_img_obj = $watermark->create_watermark($main_img_obj, $watermark_img_obj, 66);
  header('Content-Type: image/jpeg');
  header('Content-Disposition: inline; filename=' . $_GET['src']);
  imagejpeg($return_img_obj, '', 50);
?>

api.watermark.php:
Code
<?
class watermark{
  function create_watermark( $main_img_obj, $watermark_img_obj, $alpha_level = 100 ) {
  $alpha_level /= 100;
  $main_img_obj_w = imagesx( $main_img_obj );
  $main_img_obj_h = imagesy( $main_img_obj );
  $watermark_img_obj_w = imagesx( $watermark_img_obj );
  $watermark_img_obj_h = imagesy( $watermark_img_obj );
  $main_img_obj_min_x = floor( ( $main_img_obj_w / 2 ) - ( $watermark_img_obj_w / 2 ) );
  $main_img_obj_max_x = ceil( ( $main_img_obj_w / 2 ) + ( $watermark_img_obj_w / 2 ) );
  $main_img_obj_min_y = floor( ( $main_img_obj_h / 2 ) - ( $watermark_img_obj_h / 2 ) );
  $main_img_obj_max_y = ceil( ( $main_img_obj_h / 2 ) + ( $watermark_img_obj_h / 2 ) );

  $return_img = imagecreatetruecolor( $main_img_obj_w, $main_img_obj_h );

  for( $y = 0; $y < $main_img_obj_h; $y++ ) {
  for( $x = 0; $x < $main_img_obj_w; $x++ ) {
  $return_color = NULL;
  $watermark_x = $x - $main_img_obj_min_x;
  $watermark_y = $y - $main_img_obj_min_y;
  $main_rgb = imagecolorsforindex( $main_img_obj, imagecolorat( $main_img_obj, $x, $y ) );
  if ($watermark_x >= 0 && $watermark_x < $watermark_img_obj_w &&
  $watermark_y >= 0 && $watermark_y < $watermark_img_obj_h ) {
  $watermark_rbg = imagecolorsforindex( $watermark_img_obj, imagecolorat( $watermark_img_obj, $watermark_x, $watermark_y ));
  $watermark_alpha = round( ( ( 127 - $watermark_rbg['alpha'] ) / 127 ), 2 );
  $watermark_alpha = $watermark_alpha * $alpha_level;
  $avg_red = $this->_get_ave_color( $main_rgb['red'], $watermark_rbg['red'], $watermark_alpha );
  $avg_green = $this->_get_ave_color( $main_rgb['green'], $watermark_rbg['green'], $watermark_alpha );
  $avg_blue = $this->_get_ave_color( $main_rgb['blue'], $watermark_rbg['blue'], $watermark_alpha );
  $return_color = $this->_get_image_color( $return_img, $avg_red, $avg_green, $avg_blue );
  } else {
  $return_color = imagecolorat( $main_img_obj, $x, $y );
  }
  imagesetpixel( $return_img, $x, $y, $return_color );
  }
  }
  return $return_img;
  }

  function _get_ave_color( $color_a, $color_b, $alpha_level ) {
  return round( ( ( $color_a * ( 1 - $alpha_level ) ) + ( $color_b * $alpha_level ) ) );
  }

  function _get_image_color($im, $r, $g, $b) {
  $c=imagecolorexact($im, $r, $g, $b);
  if ($c!=-1) return $c;
  $c=imagecolorallocate($im, $r, $g, $b);
  if ($c!=-1) return $c;
  return imagecolorclosest($im, $r, $g, $b);
  }
}
?>

источник - http://phpexample.ucoz.net


Последние темы на форуме:
 Почтовые акки с паролями
 Общение "часть 2 "
 Обмен регистрациями (Бесплатная раскрутка вашего сайта)
 Требуются Модераторы и Журналисты
 Оцените HD - кинотеатр



Теги: PHP Скрипты для ucoz, использование, водяных, знаков
  • Добавил: Андрюха
  • Просмотров : 2159
  • Загрузок : 0
  • Добавлено: 24.10.2019
  • Категория: PHP Скрипты для ucoz






Всего комментариев: 1
1 ezhik8754   (08.04.2011 10:07:10)
ну и как же загрузить php на ucoz ??

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]