Интересно почитать… Блог в котором есть много интересной информации…

4 января 2012

Текстовый Watermark на PHP

Категория: программирование — dmitriano @ 17:48

flower-watermark-processedОказывается, что реализовать watermark на PHP, в виде полупрозрачного текста достаточно просто, нужно только вспомнить школьную геометрию и немного разобраться с GD2.

Чтобы нарисовать прозрачный текст под углом можно использовать функцию imagettftext, которая получает в качестве y-координаты некий baseline, координаты которого можно рассчитать с помощью функции imagettfbbox.

В отличии от PHP Watermark реализованного через наложение полупрозрачного изображения, текстовый watermark работает только с форматом png, для непрозрачных форматов (jpg, gif и т д), текст получается непрозрачным, поэтому с ними нужно работать через наложение полупрозрачного изображения с помощью функции imagecopy.

Общий watermark для нескольких сайтов

Для того, чтобы использовать один скрипт сразу для нескольких сайтов, можно прописать в конфигурации Apache переменную окружения, которая будет содержать путь к общим скриптам:

<VirtualHost *:80>
    ....
    SetEnv SHARED_WWW /home/someuser/shared_www/
</VirtualHost>

после чего значение переменной SHARED_WWW в PHP скрипте можно получить следующим образом:

echo 'SHARED_WWW = ' . $_SERVER["SHARED_WWW"];

теперь вместо относительных путей к шрифтам с крипте watermark-а

$font_dir = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/fonts/";

можно использовать абсолютные

$this->font_dir = $_SERVER["SHARED_WWW"] . "fonts/";

Возможно, более правильным вариантом будет задать переменную окружения в файле /etc/environment:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
SHARED_WWW="/home/someuser/shared_www"

после перезагрузки проверяем, что переменная SHARED_WWW задана для всех пользователей:

$ echo $SHARED_WWW
/home/someuser/shared_www

Однако, достучаться до этой переменной из PHP не так то просто. Проще прописать её в файле /etc/apache2/envvars:

export SHARED_WWW=/home/dmitriano/shared_www/

теперь вызов watermark-а из любого сайта выгляди так:

require_once(getenv("SHARED_WWW") . "text-watermark/watermark.php");

$watermark = new TextWatermark();

$watermark->text = "МылоМаг.рф";

$watermark->transparent_font = "83_ReginaKursivIta.ttf";

$watermark->opaque_font = "83_ReginaKursivIta.ttf";

$watermark->text_angle = 24;

$watermark->text_alpha = 60;

$watermark->font_size = array(96, 48, 12);

$watermark->SendRequestedImage();
Линии 3D/Шарики 3D

Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

SlogPost.ru