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

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

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 картинку.
Теги:
водяной знак
Добавлено: 07 Мая 2018 07:23:00 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...