Добавляем на изображение водяной знак через PHP

В данном уроке демонстрируется техника работы с библиотекой PHP GD. Основная цель - добавить водяной знак на исходное изображение и генерировать результат в виде PNG картинки на сервере. В качестве дополнения будет формироваться рамка вокруг изображения и добавляться текст. 

PHP

Code
  if (! extension_loaded('gd')) { // Проверяем установку библиотеки GD
  echo 'GD не установлено. Обратитесь к администратору вашего сайта!';
  exit;
  }

  $sOrigImg = "pic1.jpg";
  $sWmImg = "watermark.png";

  $aImgInfo = getimagesize($sOrigImg);
  $aWmImgInfo = getimagesize($sWmImg);
  if (is_array($aImgInfo) && count($aImgInfo)) {
  header ("Content-type: image/png");

  $iSrcWidth = $aImgInfo[0];
  $iSrcHeight = $aImgInfo[1];

  $iFrameSize = 15;

  $rImage = imagecreatetruecolor($iSrcWidth+$iFrameSize*2, $iSrcHeight+$iFrameSize*2); // Создаем новое изображение
  $rSrcImage = imagecreatefromjpeg($sOrigImg); // Создаем исходное изображение

  $aGrid[1] = imagecolorallocate($rImage, 130, 130, 130); // Определяем цвета для прямоугольной области
  $aGrid[2] = imagecolorallocate($rImage, 150, 150, 150);  
  $aGrid[3] = imagecolorallocate($rImage, 170, 170, 170);  
  $aGrid[4] = imagecolorallocate($rImage, 190, 190, 190);  
  $aGrid[5] = imagecolorallocate($rImage, 210, 210, 210);  
  for ($i=1; $i<=5; $i++) { // Наша маленькая рамка будет содержать 5 прямоугольников для эмуляции градиента
  imagefilledrectangle($rImage, $i*3, $i*3, ($iSrcWidth+$iFrameSize*2)-$i*3, ($iSrcHeight+$iFrameSize*2)-$i*3, $aGrid[$i]); // Рисуем заполненный прямоугольник
  }  

  imagecopy($rImage, $rSrcImage, $iFrameSize, $iFrameSize, 0, 0, $iSrcWidth, $iSrcHeight); // Копируем полученное изображение на изображение-источник

  if (is_array($aWmImgInfo) && count($aWmImgInfo)) {
  $rWmImage = imagecreatefrompng($sWmImg); // Создаем изображение водяного знака
  imagecopy($rImage, $rWmImage, $iSrcWidth-$aWmImgInfo[0], $iFrameSize, 0, 0, $aWmImgInfo[0], $aWmImgInfo[1]); // Копируем изображение водяного знака на изображение источник
  }

  $iTextColor = imagecolorallocate($rImage, 255, 255, 255); // Определяем цвет текста
  $sIP = $_SERVER['REMOTE_ADDR']; // Определяем IP посетителя
  imagestring($rImage, 5, $iFrameSize*2, $iFrameSize*2, " Адрес: Your IP adress: {$sIP}, {$sOrigImg} - ({$iSrcWidth} x {$iSrcHeight})", $iTextColor); // Рисуем текст

  imagepng($rImage); // Выводим изображение
  } else {
  echo 'Image error!';
  exit;
  }
?>


Вот что получилось:



Проверяем изображение источник. Затем подготавливаем новое изображение с помощью библиотеки GD и получаем исходное изображение. После чего рисуем рамку и копируем источник в новое изображение. Далее добавляем водяной знак (если он есть), формируем и добавляем текст. И выводим полученное изображение как PNG картинку.

  • FalleN

  • 3164

  • 1

  • 0

Ссылки на статью:

Похожие статьи: