Подтвердить что ты не робот

Создайте подборщик цветов, похожий на Photoshop, используя Javascript и HTML Canvas

Я совсем не разбираюсь в компьютерной графике и мне нужно создать подборку цветов как инструмент javascript для встраивания в HTML-страницу.

Во-первых, и глядя на Photoshop, я подумал о палитре RGB как трехмерной матрице. Моя первая попытка заключалась в следующем:

<script type="text/javascript">
        var rgCanvas = document.createElement('canvas');
        rgCanvas.width = 256;
        rgCanvas.height = 256;
        rgCanvas.style.border = '3px solid black';
        for (g = 0; g < 256; g++){
            for (r = 0; r < 256; r++){
                var context = rgCanvas.getContext('2d');
                context.beginPath();
                context.moveTo(r,g);
                context.strokeStyle = 'rgb(' + r + ', ' + g + ', 0)';
                context.lineTo(r+1,g+1);
                context.stroke();
                context.closePath();
            }
        }

        var bCanvas = document.createElement('canvas');
        bCanvas.width = 20;
        bCanvas.height = 256;
        bCanvas.style.border = '3px solid black';       
        for (b = 0; b < 256; b++){
            var context = bCanvas.getContext('2d');
            context.beginPath();
            context.moveTo(0,b);
            context.strokeStyle = 'rgb(' + 0 + ', ' + 0 + ', ' + b + ')';
            context.lineTo(20, b);
            context.stroke();
            context.closePath();
        }

        document.body.appendChild(rgCanvas);
        document.body.appendChild(bCanvas);
    </script>

это приводит к чему-то вроде  3D RGB color map

Моя мысль о том, что это слишком линейно, по сравнению с теми, которые я вижу в Photoshop и в Интернете. Я хотел бы знать логику цветового сопоставления в сборщике следующим образом: photoshop color picker

Мне не нужны сами алгоритмы, я в основном пытаюсь понять логику.

Спасибо

4b9b3361

Ответ 1

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

Генерация цвета основана на 10K javascript entry, который я нашел. Я просто исправил некоторые ошибки и сделал некоторые рефакторинги в коде.

Все, что вам нужно сделать, это включить <input type="color-picker" /> в свой код и вызвать PICKER.bind_inputs() после загрузки DOM.

Вот jsFiddle с моим кодом:

http://jsfiddle.net/mShET/1/

Имейте в виду, что спецификация HTML5 уже поддерживает вход формы для выбора цвета. Но в настоящее время только Opera реализовала его.

Ответ 2

Чтобы ответить на вопрос о логике подборщика Photoshop, похоже, что сборщик цветов основан на цветовом пространстве HSB. Оттенок (H) выбирается вертикальным ползунком справа, насыщение (S) выбирается горизонтальной осью области выбора цвета, а яркость (B) выбирается вертикальной осью области выбора цвета.

Для цитаты из Wikipedia:

Исходная цель HSL и HSV и аналогичных моделей и их наиболее распространенное текущее приложение - это инструменты выбора цвета. При их простейшем, некоторые такие сборщики цветов обеспечивают три ползунка, по одному для каждого атрибута. Однако большинство из них показывают двумерный срез модели, а также ползунок, определяющий, какой именно срез показан.

Ответ 4

Я создал проект JavaScript, "MasterColorPicker", который имеет 4 разных цветовых подборщика на холсте. Мне потребовалось несколько месяцев, читая статьи в Википедии "Цветное колесо", а также "HSB" и "HSL" и "RGB", а также работая с алгоритмами напрямую, когда я построил каждый набор цветов с нуля. Одна вещь, на которой я сосредоточен в этом проекте, - это приведение ЛОГИКИ этих цветовых пространств в простой и понятный формат. Я надеюсь, что просто использование проекта поможет вам понять каждое цветовое пространство. Что касается отображения из одного пространства в другое, например, отношения между RGB и HSL, вы должны действительно расширить свое 3D-воображение, чтобы начать это. Именно здесь я надеюсь, что этот проект может помочь. Но на самом деле, не стучите головой о стену в течение многих лет, пытаясь понять эти алгоритмы. Кроме Википедии, смотрите:

http://www.easyrgb.com/index.php?X=MATH

Все формулы, которые вы можете переварить. ЗА ИСКЛЮЧЕНИЕМ: Википедия рассказывает о "Хроме" в одной из своих статей и говорит, чтобы не путать ее с "насыщением". Мой проект MasterColorPicker добавляет еще одно цветовое пространство, hue-chroma-gray (HCG), а исходный код для этого проекта документирует формулы для преобразования между HCG и RGB. С HCG вы можете найти организацию цветов "Web-Safe", а "RainbowMeistro Color-Picker" в проекте даст вам четкую визуализацию этого цветового пространства. Вы можете попробовать проект и загрузить файлы JavaScript/HTML, чтобы использовать его в своей собственной системе (с открытым исходным кодом и бесплатно) отсюда:

http://softmoon-webware.com/MasterColorPicker_instructions.php

Мир!