• Страница 1 из 1
  • 1
Динамическое наложение водяного знака на картинки
Driver86Дата: Среда, 2012-03-14, 02:03:47 | Сообщение # 1
Нет аватара у Driver86
CyberMan
Администраторы
Сообщений: 545
Репутация: 14
Не на форуме
В этом примере демонстрируется то, как с помощью 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 к материалу получить там путь до изображения.



 
pomaДата: Пятница, 2012-06-29, 14:31:44 | Сообщение # 2
Нет аватара у poma
Пользователь
Странники
Сообщений: 1
Репутация: 0
Замечания: 0%
Не на форуме
Доброе время суток?
Попробовал прикрутить ваш скрипт.
Он работает, но есть проблемка. Обрабатываются не все изображения.
Причем если сделать перезагрузку фотки, то наложение происходит и она открывается.
Каждый раз число необработанных фоток меняется.

С чем это может быть связано?
 
  • Страница 1 из 1
  • 1
Поиск: