Акция!  Домен 34 грн, домен 55 грн, домен  - 200 грн домен  - 65 грн, домен  - 99 грн, домен  - 56 грн!, домен  - 425 грн!
Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
  • RUB
  • USD
  • EUR
  • UAH
Чат техподдержки
Вы являетесь клиентом?
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 630-90-82  MTC
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

Хостинг. Некорректное отображение водяного знака

Форумы Хостинг Некорректное отображение водяного знака
le_grom
6 лет
хостинг: есть
домен: есть
Некорректное отображение водяного знака
При переезде на этот хостинг обнаружилась проблема с наложением водяного знака в cms Simpla. Водяной знак накладывается в негативе. На локалхосте и на свободном домене на другом хостинге проблемы нет. Файлы движка и водяного знака идентичны.
Сайт http://worldsecurity.com.ua - любое увеличенное изображение. В идеале должна быть надпись темного цвета на прозрачном фоне.

Водяной знак формируется следующим кодом:
// Watermark
if(!empty($watermark) && is_readable($watermark))
{
$overlay = imagecreatefrompng($watermark);

// Get the size of overlay
$owidth = imagesx($overlay);
$oheight = imagesy($overlay);

$watermark_x = min(($dst_w-$owidth)*$watermark_offet_x/100, $dst_w);
$watermark_y = min(($dst_h-$oheight)*$watermark_offet_y/100, $dst_h);

imagecopy($dst_img, $overlay, $watermark_x, $watermark_y, 0, 0, $owidth, $oheight);

Что может быть причиной? Выключены какие-то фишки на хостинге? Неверные права доступа? Что еще? Уже мозги плавятся...

Спасибо.
Андрей
6 лет
хостинг: нет
домен: есть
Попробуйте удалить с раздела хостинг/мои сайты/статические файлы расширение картинок, которые используются в скрипте
le_grom
6 лет
хостинг: есть
домен: есть
Спасибо. Не помогло.
Евгений В.
6 лет
хостинг: есть
домен: нет
На данный момент, как видно на скриншоте, водяной знак накладывается:
http://awesomescreenshot.com/01917p2m44
le_grom
6 лет
хостинг: есть
домен: есть
Евгений, Вы невнимательно читали. Водяной знак накладывается в НЕГАТИВЕ. Должен быть темный текст на прозрачном фоне (такова картинка водяного знака, сделанная в фотошопе, расширение png, прозрачность 100%), на картинке - расплывчатый светлый текст на темном фоне.
ZimbalisT
6 лет
хостинг: есть
домен: есть
А можно посмотреть, как она на другом хостинге отображается? Версии РНР на хостингах одинаковы?
le_grom
6 лет
хостинг: есть
домен: есть
Вот 2 изображения.
Ссылка устарела.
Первое - на сайте, неправильное. Здешний хостинг, версия php 5.3.24
Второе - локалхост, так должно быть. Установлен Дэнвер, php 5.2.12
На Хостлайфе я пробовал, там тоже нормально и версия php 5.2.17
toxi
6 лет
хостинг: есть
домен: есть
У меня водяной знак накладывается так:
Файл .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>

Файл: _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]);
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);
break;
case 3:
imagePNG($out);
break;
}

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

return true;
}

?>

И файл "водяного знака": watermark.png
ZimbalisT
6 лет
хостинг: есть
домен: есть
le_grom, так попробуйте здесь понизить версию РНР
sonicua
6 лет
хостинг: нет
домен: нет
Проверил такой вот код у себя на сайте:

$overlay = imagecreatefrompng("empty.png");
$dst_img = imagecreatefromjpeg("eskiz.jpg");

// Get the size of overlay
$owidth = imagesx($overlay);
$oheight = imagesy($overlay);

imagecopy($dst_img, $overlay, 10, 10, 0, 0, $owidth, $oheight);
header('Content-Type: image/jpeg');
imagejpeg($dst_img);

Всё нормально работает и на 5.2 и на 5.3 версиях php
Посмотреть можно здесь
http://smp.co.ua/watermark....
http://smp.co.ua/empty.png
http://smp.co.ua/eskiz.jpg
le_grom
6 лет
хостинг: есть
домен: есть
Нет, ничего не помогает. Спасибо всем.
Участвовать в общении на этом форуме могут только
зарегистрированные пользователи.

Если вы уже зарегистрированы Вам необходимо войти на форум.

Тема закрыта по истечению срока давности.