|
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
|
|
Определение цвета: белый или черный?31.01.2012, 11:06. Показов 5336. Ответов 39
Метки нет (Все метки)
Есть у меня фон, оперделяемый юзером. Как прикинуть его яркость по RGB, например, чтобы принять решение печатать мне на нем белым или черным.
Т.е фон темный или светлый? Ясен перец, что просто просуммировать составляющие RGB нельзя, ибо "G" в яркость вносит гораздо больший вклад, чем "B". Кстати, может есть пример, как сами винды определяют цвет подписи (Ч или Б) к иконкам на рабочем столе, в зависимости от выбранной юзером заливки?
0
|
|
| 31.01.2012, 11:06 | |
|
Ответы с готовыми решениями:
39
При игре пропадает изображение на мониторе и появляется белый или другого цвета экран Найти вероятность вытащить белый и черный шары |
|
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
|
||||||
| 31.01.2012, 11:44 | ||||||
|
Vot etot kod pozvolit raschepit' zvet na komponenti. On v text box ustanavlivaet zvet, protivopolozhniy zvetu formi.
0
|
||||||
|
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
|
|
| 31.01.2012, 15:40 [ТС] | |
|
"Противоположный"- это надо понимать "дополнительный"?
Так это в светотехнике называется. )Но не нужен мне дополнительный цвет. Я буду рисовать черным или белым, но вот как с ним определиться??? А может, кто знает, нельзя ли RGB перегнать в GrayScale, типа... По идее он (GrayScale) должен быть с той же яркостью, что и исходный, а с уш с GrayScale определиться (темный, светлый) - элементарно. Уш как-нибудь. )
0
|
|
|
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
|
|
| 31.01.2012, 15:42 [ТС] | |
|
Вдогонку:
RGB перегнать в GrayScale без дополнительных контролов! Чиста функция или формула...
0
|
|
|
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
|
|
| 31.01.2012, 18:20 | |
|
Vi moj kod probovali xot'? Ya-to znayu, chto zvet dopolnitel'nyj. A vi znaete, chto moj kod kak raz i vipolnyaet vashu zadachu?
0
|
|
|
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
|
|
| 01.02.2012, 10:57 [ТС] | |
|
Пробовал.
Получил дополнительный цвет. И что? Задача остается той же: он "темный" или "светлый"? )Мне надо печатать не дополнительным (противоположным) цветом, а черным или белым! Каким?
0
|
|
|
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
|
|
| 01.02.2012, 16:30 | |
|
О, дошло. Пока не знаю. Если узнаю, сообщу. Очень хорошая задача.
0
|
|
|
Сумрак
|
|
| 01.02.2012, 18:25 | |
|
Забавно... Я наоборт не совсем понял вопроса, но понял где нужно посмотреть...
Книга - Джон Кларк Крейг, Джефф Уэбб "Visual Basic 5.0" Тут есть примеры извращения над цветами... Тут есть тема... Вычеслить "Цветовую константу по RGB или HSV значениям" Код класса великоват, вилы набирать... но если в тему наберу.. |
|
|
Сумрак
|
|
| 01.02.2012, 18:29 | |
|
Добавлю.. в конце прочитал..
Цветовая модель HSL аналогична HSV но использует целочисленные значения от 0 до 240 и несколько другой алгоритм их преобразования. В тоже время концептуально и функционально обе системы близки. |
|
|
Сумрак
|
|
| 01.02.2012, 18:34 | |
|
Судя из текста. Эта HSL использовалась в Win 95 и NT4 для определения допустимых цветов для системы....
|
|
|
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
|
||||||
| 01.02.2012, 18:46 | ||||||
|
Letter D,
Вот этот пример делает, что Вам надо. Магическое число 381 открывает дверь в черно-белый мир.
0
|
||||||
|
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
|
|
| 01.02.2012, 21:58 [ТС] | |
|
Нет!
((((Я в самом первом сообщении уберегал от этой ошибки: [bold]Ясен перец, что просто просуммировать составляющие RGB нельзя, ибо "G" в яркость вносит гораздо больший вклад, чем "B".[/bold] Например на чисто зеленом фоне (RGB:0,255,0) белым цветом особо не порисуешь. А ведь 255 < 381. Это неверный подход (Надо как-то вычислять яркость. Кстати, при преобразовании в GrayScale этого чисто зеленого цвета фотошоп показал, что его яркость 87% !!! У "R", "G" и "B" разные вклады в яркость, разные коэффициенты. (Кстати, разложить цвет на RGB я уж сумею, не надо постоянно этих формул )) Надо - идею!Или пойду читать книшку по светотехнике, что-то там должно быть... Неужели в виндах ничего нет? Сами-то они справляются с этой "проблемой"
0
|
|
|
1 / 1 / 0
Регистрация: 22.04.2011
Сообщений: 47
|
|
| 02.02.2012, 02:23 | |
|
Y = 0.299*R + 0.587*G + .0114*B
0
|
|
|
1 / 1 / 0
Регистрация: 22.04.2011
Сообщений: 47
|
|
| 02.02.2012, 02:24 | |
|
Опечатка. Последний коэффициент равен 0,114
0
|
|
|
1 / 1 / 0
Регистрация: 22.04.2011
Сообщений: 47
|
|
| 02.02.2012, 02:26 | |
|
Ну, на практике, эту всю сумму делим на 3...
0
|
|
|
1 / 1 / 0
Регистрация: 22.04.2011
Сообщений: 47
|
|
| 02.02.2012, 02:27 | |
|
Нет, с последним постом я чего-то переборщил. Ничего делить не надо.
0
|
|
|
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
|
||||||
| 02.02.2012, 05:34 | ||||||
|
Letter D,
Ну раз вы такой нежный и белым по зеленому для вас неэстетично, то ниже я привожу код для цветовых гурманов :0) Mz@2, У меня ощущение, что ваш код не всегда выдает черно-белое (не серое) решение. ОК, в модуль идет этот код:
0
|
||||||
|
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
|
|
| 02.02.2012, 11:11 [ТС] | |
|
VladConn,
[bold]"Ну раз вы такой нежный и белым по зеленому для вас неэстетично"[/bold] А Вы сами-то попробовали по [bold]яркозеленому[/bold] (0,255,0) написать белым? )Это для всех неэстетично. Новый пример - это [bold]тоже не то[/bold] . Он и для (255,0,0) и для (0,255,0) и для (0,0,255) возвращает одинаковую яркость, а это неправильно. Собственно система HSL ("хью, сатурейшн, лайтнесс") - это "эф, лямбда, пэ" (поток, цвет, насыщенность цвета) в светотехнике, откуда известно, что ни поток, ни лайтнесс субъективной информации (для человеческого глаза!) не несут, если не известен цвет. А для энергетики - да, несут, а именно - энергия (яркость, поток) - одинаковы. Можно и инфракрас с такой же энергией послать... только мы его увидим черным. Эта... т.е хотел сказать, что от HSL толку тоже никакого. Буду пытать пример от Mz@2. Там что-то проглядывает похожее на светотехническую формулу. Тока я думал, что зависимость должна быть нелинейной... а оно, вон как. )
0
|
|
|
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
|
|
| 02.02.2012, 11:15 [ТС] | |
|
Хотя сам пример с функцией [bold]HSL2RGB[/bold] полезен. Это- полезная функция.
)
0
|
|
|
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
|
|
| 02.02.2012, 14:04 | |
|
Letter D
Насчет нежности - то шутка. Возвращаясь к проблеме яркости. Вы знаете, то что RGB2HSL и для (255,0,0) и для (0,255,0) и для (0,0,255) возвращает одинаковую яркость, так это как раз правильно. Я проверил в Paint. Только в нем он не лайтнесс, а luminosity. Что, впрочем, в сущности одно и тоже. Разница в нормировании. Там это от 0 до 240. Главное скажите: оно для вас работает или нет? Я для некоторых цветов проверил - так у меня реагировало верно. VladConn
0
|
|
| 02.02.2012, 14:04 | |
|
Помогаю со студенческими работами здесь
20
Изменить в другой программе белый текст на черный
В приложениях белый фон поменялся на черный. и пропала контрастность в шрифтах metro
Сколькими способами можно выбрать на шахматной доске два квадрата – белый и черный? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|