Водяной знак на изображении с помощью PHP и GD

Сегодня будет интересный урок по PHP. Научимся использовать GD библиотеку. Главной задачей сегодня является добавление водяных знаков на изображения и генерация результата PNG изображений в браузере. Будем использованием PHP и GD библиотеки. Это отличные библиотеки для работы с изображениями на сервере. Также (в качестве дополнительных задач) сформируем рамку вокруг рисунка и добавим текст. Этот метод хорошо использовать для защиты исходных фотографий.
Демо

Исходник
Шаг 1. PHP

index.php

<?php
 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.

Полезные ссылки: google chrome
Категория: PHP, Новости Теги: 

Популярные записи:

Медицинская тема для WordPress — Скорая помощь Медицинская тема для WordPress — Скорая помощь
Создаем галерею изображений с эффектом аккордеона Создаем галерею изображений с эффектом аккордеона
Сделать стильным страницу входа на движке вордпресс Сделать стильным страницу входа на движке вордпресс

Оставить комментарий или два

Отправить коментарий

Test

Яндекс.Метрика