Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Нужна помощь по php

Нужна помощь по php


     13.11.2013    php    Все вопросы » Общие вопросы по PHP    2364

вопрос
Здравствуйте, у меня есть такой скрипт, суть его работы состоит в том что он ставит на картинки водяной знак.
Отлично все но в Админ Панели DLE при редактировании шаблона иконки вдруг стали черными в все остальное в порядке.

Помогите выяснить и за чего.

Ответа пока нет


4 комментария

Kolya groza morey
Юзер

Kolya groza morey - 13 ноября 2013 13:35 -

А зачем скрипт этот нужен? ДЛЕ поддерживает наложение ватемарка с коробки.

FastFud
Юзер

FastFud - 13 ноября 2013 13:43 -

У меня другие планы, и мне нужно подключить этот именно скрипт.
Он только с png форматом плохо относится. Можно ли как нибудь это исправить ?

FastFud
Юзер

FastFud - 13 ноября 2013 15:00 -

Я немного отредактировал тот код
Теперь он ставит на картинки водяной знак даже на png но вместо прозрачности png черный цвет как это исправить ?


<?php
waterMark($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'], "logo.png", "bottom=25,right=25");
//waterMark($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'], "watermark.png", "middle=0,center=0");  

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] > 0) && ($info_o[1] > 0) )
   {
   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;  
   }  
?>

dj-avtosh
PHP-developer

dj-avtosh - 15 ноября 2013 11:19 -

Подумать что такое маска и разница цветовых вхождений.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх