2 749 Скрипты / Other

Color thief - захват цвета


Плагин Color thief позволяющий "захватывать" доминирующий цвет с изображения. Данный скрипт может быть полезен для сайтов на которых требуется сделать сортировку и поиск по цвету.

  • В качестве примера приведем сайт: dribbble.

Также можно использовать плагин и для создания пользовательского интерфейса (UI), который адаптируется под цвет изображения. Например слегка изменить цвет шрифта или цвет границы в зависимости от того, какое изображение в данный момент отображается.

HTML

В демо примере используется следующая разметка:

<div class="imageSection">
	    <div class="imageWrap">
	        <img class="targetImage" src="img/1.jpg" data-colorcount="10" />
	    </div>
	    <div class="colors">
	        <div class="function dominantColor">
	            <h3>Доминирующий цвет</h3>
	            <div class="swatches"></div>
	        </div>
	        <div class="function medianCutPalette clearfix">
	            <h3>Палитра</h3>
	            <div class="swatches"></div>
	        </div>
	    </div>
	</div>

В атрибуте data-colorcount указывается количество отображаемых доминирующих цветов из палитры изображения.

CSS

Стиль в данном случае не важен, автор к тому же использует LESS для его формирования, о котором на нашем сайте мы ещё не говорили.

JS

Подключаем jQuery, quantize.js и плагин color-thief.js на странице.
Инициализация плагина в упрощенном виде выглядит так:


	myImage = $('#myImage');
	dominantColor = getDominantColor(myImage);
	paletteArray = createPalette(myImage, 10); // второй аргумент устанавливает количество цветов в палитре
	
В демо примере инициализация такая:
$(document).ready(function () {
	    // Для каждого изображения:
	    // После загрузки изображения, получение доминирующего цвета и палитры и отображение их.
	    $('img').bind('load', function (event) {
	        var image = event.target;
	        var $image = $(image);
	        var imageSection = $image.closest('.imageSection');
	        var appendColors = function (colors, root) {
	            $.each(colors, function (index, value) {
	                var swatchEl = $('<div>', {'class': 'swatch'})
	                    .css('background-color', 'rgba('+ value +', 1)');
	                root.append(swatchEl);
	            });
	        };
	        // Доминирующий цвет
	        var dominantColor = getDominantColor(image);
	        var dominantSwatch = imageSection.find('.dominantColor .swatches');
	        appendColors([dominantColor], dominantSwatch);
	
	        // Палитра
	        var colorCount = $image.attr('data-colorcount') ? $image.data('colorcount') : 10;
	        var medianPalette = createPalette(image, colorCount);
	        var medianCutPalette = imageSection.find('.medianCutPalette .swatches');
	        appendColors(medianPalette, medianCutPalette);
	    });
	});
В основном демо мы использовали упрощенную версию кода, в оригинальном же демо автора, используется шаблонизатор mustache.js для вывода изображений из массива. Этот пример вы можете посмотреть скачав исходник и запустив файл index1.html.
Скачать 524Загрузок 171,68 Kb
Демо

Комментарии

  • Facebook
  • Вконтакте

Похожие статьи