Home > Создание и монетизация сайтов > Безопасность вебсайтов > Наложение водяных знаков на картинки вордпресс.

Наложение водяных знаков на картинки вордпресс.

Многие администраторы сайтов на движке вордпресс сталкиваются с проблемой защиты не только текстовой, но и графической информации. Существуют, конечно, различные методики наложения водяных знаков на изображения в wordpress, но они, как правило, реализуются с помощью плагинов, а это лишнее потребление ресурсов. К тому же, реализация наложения водяных знаков при помощь плагинов вордпресс сопряжена, как правило, с изменением оригинального изображения, а это не всегда приемлемо.Мне удалось найти решение, при котором не портятся загружаемые картинки. Кроме того, данное решение при небольших правках применимо и для других движков. Это решение не является продуктом моей интеллектуальной деятельности, я его нашёл не в результате длительных и мучительных изысканий, а с помощью гугла в «Блоге любителя экспериментов» (www.k-max.name/web/watermark-vodyanye-znaki-na-izobrazhenii-v-wordpress/), так что в случае, если это Вам пригодится, благодарите автора сайта по указанной ссылке, а не меня.
Собственно инструкция.

1. В корне сайта создать файл watermark.php со следующим содержимым:

<?php
/*
* Блог любителя экспериментов
* http://www.k-max.name/
*/

// получаем переданный в GET параметр img
$img= $_GET['img'];

// задаем  минимальное разрешение, для которого не нужен большой водяной знак
// и на основании размера применяем соответствующий png-файл
$size = getimagesize($img);
if ($size[0]<100 || $size[1]<100 ) {
$watermark = imagecreatefrompng('empty.png');
} else {
$watermark = imagecreatefrompng('watermark.png');
}
$watermark_w = imagesx($watermark);
$watermark_h = imagesy($watermark);

// обрабатываем gif
if(eregi('.gif',$img)) {

$image = imagecreatefromgif($img);
$size = getimagesize($img);
$dest_x = $size[0] - $watermark_w - 0;
$dest_y = $size[1] - $watermark_h - 0;
imagealphablending($watermark, true);
header('Content-type: mage/gif');
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_w, $watermark_h, 50);
imagegif($image, "", 100);

}
// обрабатываем jpeg
elseif(eregi('.jpeg',$img)||eregi('.jpg',$img)) {

$image = imagecreatefromjpeg($img);
$size = getimagesize($img);
$dest_x = $size[0] - $watermark_w - 0;
$dest_y = $size[1] - $watermark_h - 0;
imagealphablending($watermark, true);
header('content-type: image/jpeg');
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_w, $watermark_h);
imagejpeg($image,"", 100);

}
// обрабатываем png
elseif(eregi('.png',$img)) {

$image = imagecreatefrompng($img);
$size = getimagesize($img);
$dest_x = $size[0] - $watermark_w - 0;
$dest_y = $size[1] - $watermark_h - 0;
imagesavealpha($image, true);
imagealphablending($watermark, true);
header('Content-type: image/png');
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_w, $watermark_h);
imagepng($image);
}
else {
exit("Изображение не имеет формат jpg, gif или png.");
}
// освобождаем память
imagedestroy($image);
imagedestroy($watermark);

?>

2. Положить в корень сайта файл watermark.png — это и есть водяной знак для изображений.

3. Также в корень сайта нужно положить файл empty.png размером в 1х1 пиксель (прозрачный) — он будет накладываться на мелкие изображения.

4. В файл .htaccess добавить

# enable watermark
RewriteRule ^(.*)wp-content/uploads/(.*(jpg|jpeg|gif|png))$ $1watermark.php?img=wp-content/uploads/$2

По этому правилу все пути, начинающиеся на wp-content/uploads/ и заканчивающиеся на jpg, jpeg, gif или png, будут заменены строкой watermark.php?src=wp-content/uploads/…

Проблемы данного метода: на изображениях с форматом .gif, а также .png с 8-битной палитрой не сохраняется прозрачность водяного знака.

Идея подсмотрена на www.k-max.name/web/watermark-vodyanye-znaki-na-izobrazhenii-v-wordpress
Хотя, я это где-то видел и раньше… ;)

+2
0
  

22.08.2012 · Алексей · 2 комментария Просмотров: 274
Метки: , , ,  · Рубрики: Безопасность вебсайтов, Улучшения WordPress

2 комментария

  1. Надежда - 23.08.2012

    Любопытно, нужно будет попробовать обязательно.

    Like or Dislike: Thumb up 2 Thumb down 0

  2. Алексей Алексей - 23.08.2012

    Попробуйте! Надеюсь, у Вас всё получится!

    Like or Dislike: Thumb up 0 Thumb down 0