Ссылки Поиск Написать В избранное NO

Как получить средний или основной цвет из изображения при помощи JavaSript?

В общем, публикация товаров в Фейсбуке, Ebay и АлиЭкспресс меня настолько утомила, что я решил отдохнуть и немного заняться программированием. Для начала, сменил старый скрипт выделения и копирования на сайте (на менее злой). А потом решил чуть облагородить просмотр фото и сделать его более похожим на тот, что у Твиттера.


(30.09.2021 blogger, work) Скрипт простого полученя среднего или основного цвета картинки - с помощью JavaScript

Да, у них при просмотре фото фон самого просмотрщика становится усредненным цветом картинки. Скорее всего, они делают это на PHP, но мне нужен был простой и быстрый ДжаваСкрипт. И такой нашелся!.. Хотя, если быть честным, довольно большую часть мне пришлось написать самому. Почму? Давайте посмотрим вместе.


«Цитата: Для нахождения среднего цвета изображения:

1) Поместите изображение на Canvas;

2) Измените размер изображения до 1px на 1px;

3) Получите цвет результирующего пикселя.»


И все скрипты или берут именно 1 на 1 пиксель, что у меня работало с переменным успехом, выдавая иногда полную ерунду. Или что-то мудрят, обсчитывая вообще все пиксели на изображении. Что вызывает определенные тормоза в работе.


Поэтому я долго возился, но сделал свой скрипт. Использую 2 на 2 пикселя и беру или градиент от одного до другого или среднее между ними. Так значения получаются более адекватными и не такими яркими, как если брать просто левый верхний угол картинки (там ведь обычно яркое небо).


Очень хотелось использовать в моем просмотрщике фото градиент, но... все как всегда. Браузеры не поддерживают анимацию через transition для него. А еще, у меня на сайте очень много ярких картинок с текстом. Поэтому я решил обнулять все цвета RGBa, хоть один канал которых превышает 200. Да и для защиты от ошибок это тоже неплохо подойдет.


Демо. Средний цвет изображения.