X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> JavaScripts
A1es
сообщение 2009-06-07, 12:32
Сообщение #1
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 180
Регистрация: 2009-04-19

Репутация:   нет  
Всего: нет


Предлагаю выкладывать в эту тему различные на ваш взгляд интересные или полезные скрипты. :)

Watermark (водяные знаки)
Работает он через .htaccess. В данном случае .htaccess перенаправляет с любой картинки на этот скрипт (_watermark.php), а этот скрипт уже по переданной информации (путь к картинке), добавляет на неё watermark.
Итак, если это кого-то заинтересует вот краткое содержание что нужно сделать:
1.Создаем в корне сайта папку с названием watermark и забрасываем в нее два этих файла:
_watermark.php (сам скрипт):
<? 

waterMark($_SERVER[&#39;DOCUMENT_ROOT&#39;].$_SERVER[&#39;REQUEST_URI&#39;], "watermark.png", "bottom=5,right=5"); 

function waterMark($original, $watermark, $placement = &#39;bottom=5,right=5&#39;, $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(&#39;,&#39;, $placement,2); 
   list($vertical, $sy) = split(&#39;=&#39;, trim($vertical),2); 
   list($horizontal, $sx) = split(&#39;=&#39;, trim($horizontal),2); 

   switch (trim($vertical)) { 
	  case &#39;bottom&#39;: 
		 $y = $info_o[1] - $info_w[1] - (int)$sy; 
		 break; 
	  case &#39;middle&#39;: 
		 $y = ceil($info_o[1]/2) - ceil($info_w[1]/2) + (int)$sy; 
		 break; 
	  default: 
		 $y = (int)$sy; 
		 break; 
	  } 

   switch (trim($horizontal)) { 
	  case &#39;right&#39;: 
		 $x = $info_o[0] - $info_w[0] - (int)$sx; 
		 break; 
	  case &#39;center&#39;: 
		 $x = ceil($info_o[0]/2) - ceil($info_w[0]/2) + (int)$sx; 
		 break; 
	  default: 
		 $x = (int)$sx; 
		 break; 
	  } 

   header("Content-Type: ".$info_o[&#39;mime&#39;]); 

   $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(вашу картинку)
2.Создаем файл .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>

и забрасываем его в папку с вашими картинками. К примеру в папку stories - в данном случае водяные знаки будут накладываться на все картинки и папки с картинками находящиеся в папке stories. Если нужно накладывать watermarkи не на все изображения папки stories, а на какие-то определенные папки с картинками - закидываем файл .htaccess именно в те папки с изображениями где нужно наложение водяных знаков.
Все! Ваши фотки с водяным знаком!

Скрипт был подкоректирован с учетом предложений, замечаний

1. Чтобы не было знака на аватарах пользователей или на картинках малого размера в _watermark.php была изменена строка:
imageCopy($out, $watermark, $x, $y, 0, 0, $info_w[0], $info_w[1]);
на:
if( ($info_o[0] > 250) && ($info_o[1] > 250) )
{
imageCopy($out, $watermark, $x, $y, 0, 0, $info_w[0], $info_w[1]);
}

250 - это размер картинки (ширина и высота), который указывает, что до 250 пикселей водяной знак не будет накладываться на изображение, а уже после 250 - будет (Размеры можно подгонять под себя).
2. Также была решена проблема не отображения картинок содержащие пробелы или русские буквы (см. пост ниже от Redstagm) Добавлено:
$original = urldecode($original);
3. Были исправлены мелкие неточности.

Внизу в архиве находятся все 3 выше перечисленные файла

Прикрепленные файлы  watermark.zip ( 3.11 килобайт ) Скачиваний: 6

P.S : в архиве уже обновленные файлы,не забываем менять картинку :D

Скрипт: информация о пользователе

<HEAD>
<TITLE>Info</TITLE>
</HEAD>
<script language="JavaScript">
// ОС

 if(navigator.userAgent.indexOf(&#39;IRIX&#39;) != -1)
	{ var OpSys = "Irix"; }
  else if((navigator.userAgent.indexOf(&#39;Win&#39;) != -1) &&
  (navigator.userAgent.indexOf(&#39;95&#39;) != -1))
	{ var OpSys = "Windows 95"; }
  else if(navigator.userAgent.indexOf(&#39;Win&#39;) != -1)
	{ var OpSys = "Windows XP or NT"; }
  else if(navigator.userAgent.indexOf(&#39;Mac&#39;) != -1)
	{ var OpSys = "Macintosh"; }
  else { var OpSys = "Other"; }

// Браузерко
bname=navigator.appName;
bversion=navigator.appVersion;
if (bname=="Netscape"){
bplugins=navigator.plugins.length;
}

// Вывод
document.write("<b>Браузер: </b>",bname,"<br>")
document.write("<b>Версия: </b>",bversion,"<br>")
if (bname=="Netscape"){
document.write("<b>Плагины(браузера): </b>",bplugins,"<br>")
}
document.write("<b>ОС: </b>",OpSys,"<br>")

</Script>


Выглядит вот так :

Прикрепленные файлы  Untitled_2.jpg ( 40.16 килобайт ) Скачиваний: 60

Прикрепленные файлы
Прикрепленные файлы  watermark.zip ( 3.11 килобайт ) Скачиваний: 6
Прикрепленные файлы  Untitled_2.jpg ( 40.16 килобайт ) Скачиваний: 60
 
Перейти в начало страницы
+Цитировать сообщение
Гость_D1ver_*
сообщение 2009-06-07, 13:21
Сообщение #2



Гости





Мб не в тему, с этими вещами пока только разбираюсь...
Как и с помощью чего обновлять на сайте определенное значение через заданный промежуток без перезагрузки страницы? Допустим есть значение меняющегося онлайна. Оно обновляется только с перезагрузкой страницы. А как сделать, чтобы сам обновлялся?
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-06-07, 14:38
Сообщение #3
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


A1es, не в обиду.
По поводу ватермарка: ватермарк нужно накладывать на картинку и СОХРАНЯТЬ ее на сервере. Чтобы картинка, лежащая на сервере уже содержала ватермарк. Вы же каждый раз заново накладываете на картинку ватермарк - напрягаете сервер непонятно зачем. Он же и повиснуть может от большой посещаловки. К тому же алгоритм наложения не совершенен.

По поводу информации и пользователе: Вы думаете я не знаю, какой у меня браузер? Или как ОСь стоит? Подобные "фишки" относятся к "нафик надо".
Перейти в начало страницы
+Цитировать сообщение
A1es
сообщение 2009-06-08, 9:00
Сообщение #4
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 180
Регистрация: 2009-04-19

Репутация:   нет  
Всего: нет


Цитата
По поводу информации и пользователе: Вы думаете я не знаю, какой у меня браузер? Или как ОСь стоит? Подобные "фишки" относятся к "нафик надо".

Конечно ты прав ,просто хотелось создать эту тему ,так как я как-то искал скрипт скинутый Зинаданом по верстке (скрипт определял размер экрана,и подставлял необходимую картинку под размер),так я чуть сума не сошёл,пока нашёл ,а эти скрипты я скинул так для общего развития.

Вот этот скрипт очень полезен,для любых проэктов :

Статус ICQ :

<A href="http://wwp.icq.com/scripts/contact.dll?msgto=1234"
title="1234"><IMG alt="ICQ status"
src="http://web.icq.com/whitepages/online?icq=1234&img=5" height="18"
width="18" hspace="5" vspace="5" align="absmiddle" border="0"></A><b>1234</b><br>


Где номер "1234" - номер аси.

Пример:
Прикрепленные файлы  Untitled_2.jpg ( 14.51 килобайт ) Скачиваний: 49


Сообщение отредактировал A1es - 2009-06-08, 9:01

Прикрепленные файлы
Прикрепленные файлы  Untitled_2.jpg ( 14.51 килобайт ) Скачиваний: 49
 
Перейти в начало страницы
+Цитировать сообщение
Гость_NekoNET17_*
сообщение 2009-08-13, 8:06
Сообщение #5



Гости





Мб не туда пишу но всеже, подскажите пожалуйста как реализововываеться инпут с выпадающим списком(стандартный хтмл) только при выборе чтобы кидало на определенный адрес. Я просто сортировку по году делаю, мне нужно к примеру как только выбрали 2009 сразу шло как бы редирект что-ли... ^_^

П.С. A1es, штука с аськой то полезна, но уж слишком часто оно притормаживает загрузку страницы...

Сообщение отредактировал NekoNET17 - 2009-08-13, 8:10
Перейти в начало страницы
+Цитировать сообщение
Skyff
сообщение 2009-08-13, 9:47
Сообщение #6
Опытный
Иконка группы

Группа: Eleanor user
Сообщений: 928
Регистрация: 2009-02-08
Из: Литва

Репутация:   нет  
Всего: 4


Может кто встречал скрипт случайного баннера, который можно вставить в блок и который бы мог выводить по реф ссылки Флеш и простые баннеры. Я вот копаюсь в интернете а мне попадаются скрипты которые случайным образом выводят картинку с ссылкой а вот такие
<script type="text/javascript" src="http://сайт.ru/b/122-240x400.js?12345"></script>

Не хотят выводить.
Перейти в начало страницы
+Цитировать сообщение
Гость_NekoNET17_*
сообщение 2009-08-13, 10:26
Сообщение #7



Гости





Skyff, вот, подергай такую конструкцию...
Между head и head:
<script language="javascript">

function RandomHTMLLong(args,delim)
{
/* si: start index 
** i: current index
** ei: end index
** cc: current count
*/
 htmlSet = new Array();
 si = 0; 
 cc=0;
 ei = args.length;
  for (i=1;i<ei;i++) {
	if (args.charAt(i) == delim) {
	  htmlSet[cc] = args.substring(si,i);
	  cc++;
	  si=i+1;
	  }
	}
  ind = Math.floor(Math.random() *cc);

  document.write(htmlSet[ind]);
}

function RandomHTML(args)
{
  RandomHTMLLong(args,&#39;,&#39;);
}

</SCRIPT>

А где нужно вставить код баннеров:
<script>
RandomHTMLLong(&#39;Код1,Код2,Код3,Код4,&#39;,&#39;,&#39;);
</SCRIPT>


Хедерский код портируй в отдельный файлик ^_^ ;)

Сообщение отредактировал NekoNET17 - 2009-08-13, 10:33
Перейти в начало страницы
+Цитировать сообщение
Skyff
сообщение 2009-08-13, 10:54
Сообщение #8
Опытный
Иконка группы

Группа: Eleanor user
Сообщений: 928
Регистрация: 2009-02-08
Из: Литва

Репутация:   нет  
Всего: 4


NekoNET17, Ок спасибо попробую.
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0451 сек.    11 запросов    GZIP включен    Сейчас: 2020-11-25, 11:48