На некоторых авторских блогах, где есть авторские картинки, водяной знак (watermark) просто необходим, чтобы меньше тырили картинки. На DLE эта функция уже есть, а вот в WordPress почему то об этом не позаботились. Есть много плагинов на WordPress для наложения водяных знаков на картинку, но многие не любят плагины из за того что они создают нагрузку, так что сейчас рассмотрим, как наложить водяной знак без плагина.
- Создаём картинку watermark.png, это наша картинка которая будет накладываться
- Создаём файл watermark.php и вставляем туда этот код:
<? waterMark($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'], "watermark.png", "bottom=5,right=5"); function waterMark($original, $watermark, $placement = 'bottom=5,right=5', $destination = null) { $original = urldecode($original); $info_o = @getImageSize($original); if (!$info_o) return false; $info_w = @getImageSize($watermark); if (!$info_w) return false; list ($vertical, $horizontal) = split(',', $placement,2); list($vertical, $sy) = split('=', trim($vertical),2); list($horizontal, $sx) = split('=', trim($horizontal),2); switch (trim($vertical)) { case 'bottom': $y = $info_o[1] - $info_w[1] - (int)$sy; break; case 'middle': $y = ceil($info_o[1]/2) - ceil($info_w[1]/2) + (int)$sy; break; default: $y = (int)$sy; break; } switch (trim($horizontal)) { case 'right': $x = $info_o[0] - $info_w[0] - (int)$sx; break; case 'center': $x = ceil($info_o[0]/2) - ceil($info_w[0]/2) + (int)$sx; break; default: $x = (int)$sx; break; } header("Content-Type: ".$info_o['mime']); $original = @imageCreateFromString(file_get_contents($original)); $watermark = @imageCreateFromString(file_get_contents($watermark)); $out = imageCreateTrueColor($info_o[0],$info_o[1]); imageCopy($out, $original, 0, 0, 0, 0, $info_o[0], $info_o[1]); //Здесь задаем размер изображения в которые можно добавлять Watermark // $info_o[0] > 250 // $info_o[1] > 250 if( ($info_o[0] > 50) && ($info_o[1] > 50) ) { imageCopy($out, $watermark, $x, $y, 0, 0, $info_w[0], $info_w[1]); } switch ($info_o[2]) { case 1: imageGIF($out); break; case 2: imageJPEG($out); break; case 3: imagePNG($out); break; } imageDestroy($out); imageDestroy($original); imageDestroy($watermark); return true; } ?>
- создаём папку watermark и туда суём наши файлы watermark.png и watermark.php
- кидаем папку watermark в корень сайта (обычно public_html)
- создаём файл .htaccess и добавляем в него код:
DirectoryIndex index.php <FilesMatch ".(gif|jpg|png)$"> RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.*)$ /watermark/watermark.php [T=application/x-httpd-php,L,QSA] </FilesMatch>
Файл .htaccess кидаем в папки с картинками где хотим видеть водяной знак. Лучше всего кинуть файл .htaccess в папку /wp-content/uploads/, именно туда загружаются картинки из статей. Ну вот и всё, всем удачи)