В этом примере демонстрируется то, как с помощью PHP на uCoz создавать изображения с водяными знаками (watermark). Знак накладывается динамически, т.е. если вы его в будущем измените - изменения затронут все изображения. И, к тому же, место на сервере не занимается, т.к. изображение создаётся в реальном времени. Для выполнения данного действия скрипт использует функции графической бибилиотеки GD. Исходный код данного примера приведен ниже. Создаём файл image.php и загружаем его в папку /scripts. Затем вставляем в него следующий код:
Code
<?php
$___notjson = 1;
$ch = curl_init();
curl_setopt_array($ch, array(CURLOPT_URL => $_GET['fo'],
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 5,
CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)")
);
$original = imagecreatefromstring(curl_exec($ch));
$watermark = imagecreatefrompng('watermark.png');
curl_close($ch);
$w = imagesx($original);
$h = imagesy($original);
$w1 = imagesx($watermark);
$h1 = imagesy($watermark);
$out = imagecreatetruecolor($w, $h);
imagecopy($out, $original, 0, 0, 0, 0, $w, $h);
if($w-$w1-10 > 0 AND $h-$h1-10 > 0) imagecopy($out, $watermark, $w-$w1-10, $h-$h1-10, 0, 0, $w1, $h1);
header('Content-Type: image/jpeg');
imagejpeg($out, '', 80);
?>
Создайте картинку для ватермарка (например, логотип вашего сайта), сохраните его как watermark.png и загрузите в туже папку со всеми php-скриптами.
Рассмотрим на примере, как это использовать.
- Заходим в шаблон страницы материала модуля фотографий.
- Ссылку до фотографии заменяем на http://SITE_ADDRESS/php/image.php?fo=$PHOTO_URL$.
- Сохраняем. Наблюдаем результат в модуле фотографий на странице материала. Аналогично можно сделать для других страниц других модулей.
Безусловно, смущает то, что при просмотре исходного кода можно увидеть ссылку до оригинального изображения БЕЗ WATERMARK, которая передаётся как параметр fo скрипту image.php. Проблему можно решить, если передавать скрипту не путь до изображения, а ссылку до материала, а уже в скрипте путём обращения через API к материалу получить там путь до изображения.