Водяные знаки

Uzseo
На сайте с 26.10.2007
Offline
114
713

Приветствую Вас!

Помогите плиз, с реально рабочим классом PHP, который накладывает на картинки водяные знаки.

На входе текст, на выходе текст наложенный на изображение.

Заранее спасибо!

skAmZ
На сайте с 04.09.2009
Offline
122
#1

http://www.yagnenok.com/nalozhenie-vodyanogo-znaka-na-fotoob-yavleniya-v-marketplace-1.4.6.html

Там дальше в зависимости от того как вы планируете использовать. В любом случае менять пару строк.

P.S. пример использования, подключив файл wat-text.php

Watermark_Image('1.jpg', 'lucida.ttf', 20, 'Watermark text');
Uzseo
На сайте с 26.10.2007
Offline
114
#2
skAmZ:

P.S. пример использования, подключив файл wat-text.php
Watermark_Image('1.jpg', 'lucida.ttf', 20, 'Watermark text');

Watermark_Image почему то не работает в моём апаче.

И обязательно для этого подключать шрифт?

(P.S. пример использования, подключив файл wat-text.php) и как к примеру это сделать для вывода картинки с подписью?

firefox19
На сайте с 05.11.2009
Offline
34
#3

посмотрите тут:

/ru/forum/526577

Ваши идеи - наша работа (http://yaweb.ru) Продам Сайт агентства недвижимости (/ru/forum/561489)
skAmZ
На сайте с 04.09.2009
Offline
122
#4
Ikrom:
Watermark_Image почему то не работает в моём апаче.

Что пишет, на eregi ругается?

Ikrom:
И обязательно для этого подключать шрифт?

Да.

Ikrom:
(P.S. пример использования, подключив файл wat-text.php) и как к примеру это сделать для вывода картинки с подписью?

Изначальный код представлен чтоб сохранять в файл. Если нужен вывод, то соответствующий блок заменить на:


// Записать измененный файл на место
switch (strtolower($pocket[1])) {
case "jpeg":
case "jpg": {
header("Content-type: image/jpg");
ImageJPEG($dst_im);
break;
}
case "gif": {
header("Content-type: image/gif");
ImageGIF($dst_im);
break;
}
case "png": {
header("Content-type: image/png");
ImagePNG($dst_im);
break;
}
}
Uzseo
На сайте с 26.10.2007
Offline
114
#5

Вот этот кусок кода работает нормально:

$source="1.jpg";

$watermark="2.jpg";
$dest="images/result";
function watermark($source, $watermark, $dest) {
$source_size = getimagesize($source);
$watermark_size = getimagesize($watermark);

switch ($source_size[2]) {
case 1: $sImg = @imagecreatefromgif ($source); break;
case 2: $sImg = @imagecreatefromjpeg ($source); break;
case 2: $sImg = @imagecreatefrompng ($source); break;
}

switch ($watermark_size[2]) {
case 1: $wImg = @imagecreatefromgif ($watermark); break;
case 2: $wImg = @imagecreatefromjpeg ($watermark); break;
case 2: $wImg = @imagecreatefrompng ($watermark); break;
}

$im = imagecreatetruecolor($source_size[0], $source_size[1] );
imagecolorallocate ($im, 0, 0, 0);
imagecopy($im, $sImg, 0, 0, 0, 0, $source_size[0], $source_size[1]);
imagecopy($im, $wImg, 5, $source_size[1]-50,0, 0, $watermark_size[0], $watermark_size[1]-10);


switch ($source_size[2]) {
case 1: $sImg = @imagegif($im, $dest.'.gif'); break;
case 2: $sImg = @imagejpeg($im, $dest.'.jpg'); break;
case 3: $sImg = @imagepng($im, $dest.'.png'); break;
}
}

watermark('1.jpg', '2.jpg', 'images/result');

Но хотелось бы что бы вместо 2 картинки можно было вставлять именно текст подписи, потому что такой вариант лучше подойдёт, так как картинок будет много и подписи на них будут разные. А рисовать watermark под каждую уж больно не охота.

Спасибо!

skAmZ
На сайте с 04.09.2009
Offline
122
#6
Ikrom:
Но хотелось бы что бы вместо 2 картинки можно было вставлять именно текст подписи, потому что такой вариант лучше подойдёт, так как картинок будет много и подписи на них будут разные. А рисовать watermark под каждую уж больно не охота.
Спасибо!

Я вам с самого начала написал...

skAmZ:
подключив файл wat-text.php

В вы используете wat.php

Uzseo
На сайте с 26.10.2007
Offline
114
#7

Спасибо всем!!! Решение нашёл благодаря Вас, и в частности особая благодарность skAmZ! ;)

S1
На сайте с 17.03.2010
Offline
62
#8

А можно вот так:

Создаем в корне сайта директорию /watermark/

Туда кидаем _watermark.php (Код ниже)

<? 


waterMark($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'], "watermark.png", "center");

function waterMark($original, $watermark, $placement = 'center', $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]);
if( ($info_o[0] > 100) && ($info_o[1] > 100) )
{
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.png (который будем накладывать).

Далее в директорию с изображениями на которые нужно наложить watermark кидаем .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>

всё ;)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий