Форум по теме охота,рыбалка,спорт,кладоискательство,антиквариат,оружие,армия,политика,кино,наука,музыка,танцы,рукоделие,компьютеры,общение
http://uvlecheniehobby.ru-лучший сайт по хобби,охота,рыбалка,спорт,армия,оружие,антиквариат,кладопоиск,нумизматика,общение,встречи,политика,новости,купля-продажа,наука,образование,культура,компьютеры,электроника и многое другое.
Григорий Королёв Профессиональный ведический астролог Лесное Рейки Твой профессиональный успех Юнг слционика Болаяра Философия и психология жизни Алла Балановская спецгост




html clock code часы html на сайт

www.uvlecheniehobby.ru$5387$5387Сколько стоит ваш?

.

водяные знаки на изображениях с помощью php и apache (.htacc

Компьютерные программы и обучение.

Модераторы: ryururu, Золотунчик

водяные знаки на изображениях с помощью php и apache (.htacc

Сообщение admin » 22 авг 2015, 14:34

Watermark (водяные знаки) на изображении в WordPress и на других движках
Доброго времени, читатели http://www.uvlecheniehobby.ru Сегодня опишу маленькое HOWTO, как на WordPress реализовать водяные знаки на изображениях с помощью php и apache (.htaccess). Самое интересное, что не понадобится нам никаких плагинов! При этом, данное решение вполне применимо к другим движкам. Итак, во первых, добавим в файл .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/... Это позволяет оставлять неизменными исходные изображения и не применять обработчик для таких файлов, как архивы и др. Соответственно, заменив путь wp-content/uploads/на свой можно применить обработку изображений для другого движка.

Кроме этого, необходимо положить в корень сайта файл с именем watermark.png. Это файл самого водяного знака, который будет наложен на основное изображение. Так же, необходимо положить файл empty.png, который содержит 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);

 ?>

Готовый архив можно скачать ниже и распаковать себе в корневой каталог блога. В архиве отсутствует файл .htaccess, чтобы вы не заменили свои настройки wordpress, поэтому не забудьте добавить вышеуказанную строку.

Известные баги:

на изображениях gif - не сохраняется прозрачность водяного знака :( Чтобы от этого избавиться, уберите из строки в .htaccess это "|gif". Но в таком случае, водяные знаки не будут ставится на gif изображения.
на png с 8-bit политрой так же не сохраняется прозрачность водяного знака
данный способ не работает на хостингах, использующих NGINX для вывода статики.
Буду благодарен за решение или подсказку решения данных проблем.

Скачать watermark для изображений WordPress.
 Download Here...
За ВДВ...
Аватара пользователя
admin
Администратор
 
Зарегистрирован: 19 сен 2013, 19:36

Вернуться в Информатика-SEO,IT,сайты.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Наверх .