Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Watermark. Процентное соотношение и черный экран.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Watemark не растягивается.
vtkvitek
Отправлено: 27 Декабря, 2016 - 18:35:24
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Вечер добрый.
Подскажите, пожалуйста. Есть скрипт наложения водяного знака. Все работает, но водяной знак фиксированного размера, а изображения разного. Из-за этого кажется, что watemark разного размера. Если пишу в процентном соотношении, то область за пределами фактического размера знака становится чёрной. Нужно как-то растянуть сам знак.
Поиском пользовался. Похожие темы нашел, ответа нет.
Заранее благодарен

Содержимое скрипта.

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

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;
$info_w[0] = $info_o[0] *0.6;
$info_w[1] = $info_o[1] *0.24;

list ($vertical, $horizontal) = explode(',', $placement,2);
list($vertical, $sy) = explode('=', trim($vertical),2);
list($horizontal, $sx) = explode('=', 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]);

if ($info_o[2] == 3) {
$transparent = imagecolorallocatealpha($out, 0, 0, 0, 127);
imagefill($out, 0, 0, $transparent);
imagesavealpha($out, true);
}
imagecopy($out, $original, 0, 0, 0, 0, $info_o[0], $info_o[1]);


if( ($info_o[0] > 250) && ($info_o[1] > 250) )
{
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, NULL, 95);
break;
case 3:
imagePNG($out);
break;
}

imageDestroy($out);
imageDestroy($original);
imageDestroy($watermark);

return true;
}

?>

(Отредактировано автором: 27 Декабря, 2016 - 18:35:58)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB