<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Deerua about Coding: последние заметки с тегом &amp;laquo;canvas&amp;raquo;</title><link>http://deer.org.ua/keywords/canvas/</link><description></description><language>ru</language><generator>e2 (http://blogengine.ru/)</generator><item><title>Javascript GrayScale Image (Crossbrowser)</title><guid isPermaLink="true">http://deer.org.ua/2009/11/15/1/</guid><link>http://deer.org.ua/2009/11/15/1/</link><comments>http://deer.org.ua/2009/11/15/1/comments/</comments><description>Как сделать из рисунка, с помощью javascript черно-белую картинку? Не простая казалось бы задача, но решается не сложно. Для ИЕ есть могучий css-фильтр, но для картинок нет селектора :hover (псевдо-класса), потому имитировать его мы будем через javascript, а для остальных браузеров будет canvas. &lt;pre&gt;&lt;span class="hl-comment"&gt;// Функция для "остальных" браузеров
// Которая и делает преобразование
&lt;/span&gt;&lt;span class="hl-reserved"&gt;function &lt;/span&gt;&lt;span class="hl-identifier"&gt;grayscale&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;bPlaceImage&lt;/span&gt;&lt;span class="hl-brackets"&gt;){
	&lt;/span&gt;&lt;span class="hl-comment"&gt;// Создаём объект типа canvas.2d
  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;myCanvas&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-builtin"&gt;document&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;createElement&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;canvas&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;myCanvasContext&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;myCanvas&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;getContext&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;2d&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
  &lt;/span&gt;&lt;span class="hl-comment"&gt;// Делаем его размером с нашу картинку
  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;imgWidth&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;width&lt;/span&gt;&lt;span class="hl-code"&gt;;
  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;imgHeight&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;height&lt;/span&gt;&lt;span class="hl-code"&gt;;
  &lt;/span&gt;&lt;span class="hl-identifier"&gt;myCanvas&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;width&lt;/span&gt;&lt;span class="hl-code"&gt;= &lt;/span&gt;&lt;span class="hl-identifier"&gt;imgWidth&lt;/span&gt;&lt;span class="hl-code"&gt;;
  &lt;/span&gt;&lt;span class="hl-identifier"&gt;myCanvas&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;height&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;imgHeight&lt;/span&gt;&lt;span class="hl-code"&gt;;
  &lt;/span&gt;&lt;span class="hl-comment"&gt;// Пихаем картинку в наш объект
  &lt;/span&gt;&lt;span class="hl-identifier"&gt;myCanvasContext&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;drawImage&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
	&lt;/span&gt;&lt;span class="hl-comment"&gt;// Заганяем попиксельно картинку в матрицу
  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;myCanvasContext&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;getImageData&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;imgWidth&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;imgHeight&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
  &lt;/span&gt;&lt;span class="hl-comment"&gt;// Теперь в цикле, каждый пиксель мы делаем ч/б
  &lt;/span&gt;&lt;span class="hl-reserved"&gt;for &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-code"&gt;&amp;lt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;height&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-code"&gt;++&lt;/span&gt;&lt;span class="hl-brackets"&gt;){
    &lt;/span&gt;&lt;span class="hl-reserved"&gt;for &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;j&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-identifier"&gt;j&lt;/span&gt;&lt;span class="hl-code"&gt;&amp;lt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;width&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-identifier"&gt;j&lt;/span&gt;&lt;span class="hl-code"&gt;++&lt;/span&gt;&lt;span class="hl-brackets"&gt;){
		  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;index&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-code"&gt;*&lt;/span&gt;&lt;span class="hl-number"&gt;4&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;*&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;width&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;j&lt;/span&gt;&lt;span class="hl-code"&gt;*&lt;/span&gt;&lt;span class="hl-number"&gt;4&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
		  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;red&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;data&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;index&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;;	  
		  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;green&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;data&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;index&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-number"&gt;1&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;;
		  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;blue&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;data&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;index&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-number"&gt;2&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;;	  
		  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;alpha&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;data&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;index&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-number"&gt;3&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;;	 
		  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;average&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;red&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-identifier"&gt;green&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-identifier"&gt;blue&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;*&lt;/span&gt;&lt;span class="hl-number"&gt;0.3333&lt;/span&gt;&lt;span class="hl-code"&gt;; 	  
		  &lt;/span&gt;&lt;span class="hl-comment"&gt;// Оставляем прозрачность и делим на среднее от RGB
			&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;data&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;index&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;average&lt;/span&gt;&lt;span class="hl-code"&gt;;
			&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;data&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;index&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-number"&gt;1&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;average&lt;/span&gt;&lt;span class="hl-code"&gt;;
			&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;data&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;index&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-number"&gt;2&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;average&lt;/span&gt;&lt;span class="hl-code"&gt;;
			&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;data&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;index&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-number"&gt;3&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;alpha&lt;/span&gt;&lt;span class="hl-code"&gt;;
		&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
  }
  &lt;/span&gt;&lt;span class="hl-comment"&gt;// Получаем чёрно-белую картинку
  &lt;/span&gt;&lt;span class="hl-identifier"&gt;myCanvasContext&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;putImageData&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;, 
  	&lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;width&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;imageData&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;height&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
	&lt;/span&gt;&lt;span class="hl-comment"&gt;// Вставляем чёрнобелую картинку
	// От параметра зависит куда вставляем
	// Либо рядом в div-ку, либо отдаём через return
  &lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;bPlaceImage&lt;/span&gt;&lt;span class="hl-brackets"&gt;){  
	  &lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;myDiv&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-builtin"&gt;document&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;createElement&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;div&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;  
	  &lt;/span&gt;&lt;span class="hl-identifier"&gt;myDiv&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;appendChild&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;myCanvas&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
	  &lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;parentNode&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;appendChild&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;myCanvas&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;/span&gt;&lt;span class="hl-comment"&gt;//, image);
  &lt;/span&gt;&lt;span class="hl-brackets"&gt;}
  &lt;/span&gt;&lt;span class="hl-reserved"&gt;return &lt;/span&gt;&lt;span class="hl-identifier"&gt;myCanvas&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;toDataURL&lt;/span&gt;&lt;span class="hl-brackets"&gt;()&lt;/span&gt;&lt;span class="hl-code"&gt;;

&lt;/span&gt;&lt;span class="hl-brackets"&gt;}

&lt;/span&gt;&lt;span class="hl-comment"&gt;// Функция, что делает картинку ч/б и при наведении мыши возвращает 
// нормальное состояние
&lt;/span&gt;&lt;span class="hl-reserved"&gt;function &lt;/span&gt;&lt;span class="hl-identifier"&gt;MakeGSImage&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-brackets"&gt;){
	&lt;/span&gt;&lt;span class="hl-comment"&gt;// если испортил (только у него есть фильтр) 
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;typeof &lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;style&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;filter&lt;/span&gt;&lt;span class="hl-code"&gt; != &lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;undefined&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;) {
		&lt;/span&gt;&lt;span class="hl-comment"&gt;// объект должен иметь лаяут
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;style&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;zoom&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-number"&gt;1&lt;/span&gt;&lt;span class="hl-code"&gt;;
		&lt;/span&gt;&lt;span class="hl-comment"&gt;// делаем ч/б используя фильтр grayscale=1
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;style&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;filter&lt;/span&gt;&lt;span class="hl-code"&gt; = 
			&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-code"&gt;;
		&lt;/span&gt;&lt;span class="hl-comment"&gt;// вешаем тригеры мыши
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;onmouseover&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-brackets"&gt;(){
			&lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;style&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;filter&lt;/span&gt;&lt;span class="hl-code"&gt; = 
				&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;progid:DXImageTransform.Microsoft.BasicImage(grayscale=0)&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;onmouseout&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-brackets"&gt;(){
			&lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;style&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;filter&lt;/span&gt;&lt;span class="hl-code"&gt; = 
				&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
	} &lt;/span&gt;&lt;span class="hl-reserved"&gt;else &lt;/span&gt;&lt;span class="hl-brackets"&gt;{
		&lt;/span&gt;&lt;span class="hl-comment"&gt;// для функции grayscale практически идентично %)
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;mouseOverImage&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;src&lt;/span&gt;&lt;span class="hl-code"&gt;;
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;onload&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-brackets"&gt;(){&lt;/span&gt;&lt;span class="hl-reserved"&gt;return true&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;&lt;span class="hl-code"&gt;;
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;normalImage&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;grayscale&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-reserved"&gt;false&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;onmouseover&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-brackets"&gt;(){&lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;src&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;mouseOverImage&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;onmouseout&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-brackets"&gt;(){&lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;src&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;normalImage&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;src&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-identifier"&gt;image&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;normalImage&lt;/span&gt;&lt;span class="hl-code"&gt;;	
	&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
}&lt;/span&gt;&lt;/pre&gt;&lt;ul class="r1pxc"&gt; 
&lt;li&gt;&lt;a target="_blank" href="/samples/grayscale/index.html"&gt;
&lt;b&gt;Посмотреть Пример&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;&lt;br&gt;&lt;hr /&gt;&lt;a href="http://deer.org.ua/2009/11/15/1/comments/"&gt;Комментарии&lt;/a&gt; к заметке&lt;br /&gt;&lt;br /&gt;Теги:&lt;br /&gt;&lt;a href="http://deer.org.ua/tags/javascript/"&gt;javascript&lt;/a&gt; &amp;gt; &lt;a href="http://deer.org.ua/tags/javascript/canvas/"&gt;canvas&lt;/a&gt;&lt;br /&gt;&lt;a href="http://deer.org.ua/tags/browsers/"&gt;browsers&lt;/a&gt; &amp;gt; &lt;a href="http://deer.org.ua/tags/browsers/crossbrowser/"&gt;crossbrowser&lt;/a&gt;</description><pubDate>Sun, 15 Nov 2009 22:52:03 +0200</pubDate></item></channel></rss>