{lang: ‘ru’}

php gd, библиотека gd, php наложение водяного знака, php водяной знак, водяной знак php,  водяные знаки phpВ сегодняшнем уроке я покажу вам, как использовать библиотеку GD. Основная задача урока — добавление водяного знака на изображения и вывод результата в браузере. Мы будем использовать PHP и библитеку GD. Это отличная библиотека, которая обрабатывает изображения на стороне сервера. Также (как дополнение) я нарисую рамку и добавлю некоторый текст на изображение. Применив полученные навыки Вы сможете использовать добавление водяных знаков в реальном времени, для защиты оригинальных фотографий.

Demo  Скачать

Шаг 1. PHP

В этот раз ничего не потребуется кроме 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, "IP: {$sIP}, {$sOrigImg} - ({$iSrcWidth} x {$iSrcHeight})", $iTextColor); // draw text

        imagepng($rImage); // получаемое png изображение
    } else {
        echo 'Error';
        exit;
    }
?>

Я добавил свои комментарии во всех местах, где могут возникнуть вопросы, так что я надеюсь трудностей с кодом не должно возникнуть. Для начала мы проверяем исходное изображение, если оно существует, то мы создаем новое изображение при помощи GD, после составления нашего исходного изображения подготовленного объекта ресурса. Если все прощло успешно, то мы добавляем водяной знак (если есть), после чего определяем IP посетителя  и отрисовываем текст на нашем изображении. В результате — мы получаем PNG изображение в нашем браузере. Вот и все,  мы научились создавать водяной знак PHP.

Я надеюсь, что сегодняшняя статья  для Вас оказалась полезной.  Удачи Вам в вашей работе!


Получайте новые статьи блога прямо себе на почту