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 и RewriteRule

 PHP.SU

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


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

> Без описания
sinsir
Отправлено: 01 Февраля, 2012 - 10:48:11
Post Id


Новичок


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


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




Здравствуйте.
Помогите разобраться с проблемой наложения ватермарки на изображение.
Имеетя скрипт ПХП обработки изображения. Сам по себе он работает и ватермарку накладывает. Но когда я делаю перенаправление на него через htaccess , то изображение не выводится. При чем скрипт довольно распространенный на просторах интернета и у многих он работает без проблем, хотя у многих и неработает. у меня и на локальном и на хосте он нехочет работать. Очевидно что есть какие-то хитрости в htaccess которые недают корректно работать скрипту.

Расположение директорий: localhost/watermark/index.php - основная страница
localhost/watermark/watermark/wa termark.php - скрипт
localhost/watermark/img/11.jpg - картинка


Вот собственно сам htaccess
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. php_flag display_errors on
  3. php_value error_reporting "E_ALL & ~E_NOTICE"
  4.  
  5. <FilesMatch "\.(gif|jpg|png|JPG|jpeg)$">
  6. RewriteEngine On
  7. RewriteCond %{REQUEST_FILENAME} -f
  8. RewriteRule ^(.*)$ /watermark/watermark.php [T=application/x-httpd-php,L,QSA]
  9. </FilesMatch>


А вот сам скрипт
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. waterMark("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'], "watermark.png", "bottom=5,right=5");
  3.  
  4. function waterMark($original, $watermark, $placement = 'bottom=5,right=5', $destination = null) {
  5.   $original = urldecode($original);
  6.   $info_o = @getImageSize($original);
  7.   if (!$info_o)
  8.         return false;
  9.   $info_w = @getImageSize($watermark);
  10.   if (!$info_w)
  11.         return false;
  12.  
  13.   list ($vertical, $horizontal) = split(',', $placement,2);
  14.   list($vertical, $sy) = split('=', trim($vertical),2);
  15.   list($horizontal, $sx) = split('=', trim($horizontal),2);
  16.  
  17.   switch (trim($vertical)) {
  18.      case 'bottom':
  19.         $y = $info_o[1] - $info_w[1] - (int)$sy;
  20.         break;
  21.      case 'middle':
  22.         $y = ceil($info_o[1]/2) - ceil($info_w[1]/2) + (int)$sy;
  23.         break;
  24.      default:
  25.         $y = (int)$sy;
  26.         break;
  27.      }
  28.  
  29.   switch (trim($horizontal)) {
  30.      case 'right':
  31.         $x = $info_o[0] - $info_w[0] - (int)$sx;
  32.         break;
  33.      case 'center':
  34.         $x = ceil($info_o[0]/2) - ceil($info_w[0]/2) + (int)$sx;
  35.         break;
  36.      default:
  37.         $x = (int)$sx;
  38.         break;
  39.      }
  40.  
  41.   header("Content-Type: ".$info_o['mime']);
  42.  
  43.   $original = @imageCreateFromString(file_get_contents($original));
  44.   $watermark = @imageCreateFromString(file_get_contents($watermark));
  45.   $out = imageCreateTrueColor($info_o[0],$info_o[1]);
  46.  
  47.   imageCopy($out, $original, 0, 0, 0, 0, $info_o[0], $info_o[1]);
  48.  
  49. //Здесь задаем размер изображения в которые можно добавлять Watermark
  50. // $info_o[0] > 250 - ширина изображения должна быть больше 250 px
  51. // $info_o[1] > 250 - высота изображения должна быть больше 250 px
  52.  
  53.   if( ($info_o[0] > 250) && ($info_o[1] > 250) )
  54.   {
  55.   imageCopy($out, $watermark, $x, $y, 0, 0, $info_w[0], $info_w[1]);
  56.   }
  57.  
  58.   switch ($info_o[2]) {
  59.      case 1:
  60.         imageGIF($out);
  61.         break;
  62.      case 2:
  63.         imageJPEG($out);
  64.         break;
  65.      case 3:
  66.         imagePNG($out);
  67.         break;
  68.         }
  69.  
  70.   imageDestroy($out);
  71.   imageDestroy($original);
  72.   imageDestroy($watermark);
  73.  
  74.   return true;
  75.   }
  76. ?>

(Отредактировано автором: 01 Февраля, 2012 - 10:53:45)

 
 Top
Мелкий Супермодератор
Отправлено: 01 Февраля, 2012 - 11:33:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Накладывайте ватермарк при загрузке изображения. На лету пережимать пытаться - нагрузка жуткая.


-----
PostgreSQL DBA
 
 Top
sinsir
Отправлено: 01 Февраля, 2012 - 11:56:02
Post Id


Новичок


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


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




Мелкий пишет:
Накладывайте ватермарк при загрузке изображения. На лету пережимать пытаться - нагрузка жуткая.

У меня задача другая. Сайту уже 10 лет, там фоток тысячи и в разных директориях, так что их сменить уже неполучится. Нужно именно на лету делать. Посещаемость неочень большая, около 100 чел в сутки. Так что думаю сервак нагрузку выдержит.
 
 Top
Gover
Отправлено: 01 Февраля, 2012 - 19:33:56
Post Id



Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Февр. 2007  
Откуда: Беларусь


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




у меня вместо
PHP:
скопировать код в буфер обмена
  1. waterMark("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'], "watermark.png", "bottom=5,right=5");

было
PHP:
скопировать код в буфер обмена
  1. waterMark($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'], "watermark.png", "bottom=5,right=5");

и работало
 
 Top
sinsir
Отправлено: 01 Февраля, 2012 - 20:23:17
Post Id


Новичок


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


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




Это у тебя корень файловой системы берется а я взял имя сервера. Но результат всеравно такой же Хм
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Apache и другие веб-серверы »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB