[Решено] JQuery Desaturation

Главные вкладки

Аватар пользователя FORTIS FORTIS 26 марта 2010 в 10:56

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

Хочется сделать это без предварительной нарезки картинок на цветные и чернобелые.

Комментарии

Аватар пользователя FORTIS FORTIS 13 апреля 2010 в 8:51

сделал с Pixastic + JQuery.
Pixastic собираем тут: http://www.pixastic.com/lib/download (Core + Desaturate)

В template.php подключаем Pixastic и JQuery:

drupal_add_js('misc/jquery.js','core');
drupal_add_js( path_to_theme() . '/pixastic.custom.js', 'theme' );

В page.tpl в секцию head добавляем:

        <script type="text/javascript">
                $(function(){
                                 $(window).load(function(){
                                                $('div#block-views-brands-block_1 img').attr({onmouseout: "saturate(this);"});
                                                $('div#block-views-brands-block_1 img').each(function(e){
                                                        var img2 = Pixastic.process(this, "desaturate");
                                                        img2.onmouseover = function() {
                                                                Pixastic.revert(this);
                                                        }
                                                });
                                });
                });
               
                function saturate(img) {
                                var img2 = Pixastic.process(img, "desaturate");
                                img2.onmouseover = function() {
                                        Pixastic.revert(this);
                                }
               
                }
</script>

Мышь пришла - картинки поцветнели, мышь ушла - картинки обесцветились Wink

Аватар пользователя FORTIS FORTIS 10 февраля 2012 в 9:38

Ну для спец эффекта использовать image cache это лишнее, лучше использовать клиентские ресурсы. Чуть позже сегодня напишу как под д7 сделать, в целом почти также

Аватар пользователя FORTIS FORTIS 10 февраля 2012 в 17:29

нужно чуть переписать и применить подход с function saturate(img) который я для шестерки использовал, попробуйте пока сами, позже помогу если что, пока нет времени.

Аватар пользователя FORTIS FORTIS 12 февраля 2012 в 13:37

ДЛЯ DRUPAL 7

Pixastic собираем тут: http://www.pixastic.com/lib/download (Core + Jquery Plugin + Desaturate)
В template.php подключаем Pixastic:

function ИМЯТЕМЫ_preprocess_html(&$vars) {
  drupal_add_js(path_to_theme() . '/js/jquery.pixastic.desaturate.js');
  drupal_add_js(path_to_theme() . '/js/script.js');
}

В каталоге с темой создаем каталог js и в него кладем собранный
ранее jquery.pixastic.desaturate.js (возможно другое имя файла) и создаем там файл script.js cо следующим содержанием:

(function ($) {
$(document).ready(function(){
  $('img').mouseover(function() {
    $(this).pixastic('desaturate')
           .mouseout(function() {
             Pixastic.revert(this);
           });
  });
});
})(jQuery);

Проверил, работает

Аватар пользователя aimisland aimisland 22 июля 2012 в 11:40

FORTIS или кто знает, этот код и все остальное применяется сразу ко всем картинкам на сайте?
или его можно например прописать в CSS для определенного изображения??

Аватар пользователя FORTIS FORTIS 28 октября 2013 в 15:23

ну а теперь могу с чистой совестью сказать, что использовать этот плагин нафиг не нужно, если цель ваша сделать спец.эффект - используйте css3-filters с vendor prefixes

  -webkit-filter: grayscale(100%);
  -moz-filter: grayscale(100%);
  -ms-filter: grayscale(100%);
  filter: grayscale(100%);

не нужно грузить клиентскую часть скриптами ради поддержки старья, даже без спец.эффектов сайт должен быть приятным и удобным, и должен выполнять свои задачи, а не картинки раскрашивать Smile