Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 21.12.2021
Сообщений: 2

Как преобразовать RGB в HSL в Java

08.06.2022, 15:30. Показов 1307. Ответов 3

Студворк — интернет-сервис помощи студентам
Есть 3 переменные

Java
1
2
3
int r;
int g;
int b;
Мне нужно преобразовать RGB в HSL, а не в HSV. Для этого у меня есть функция, которая принимает 3 параметра. В него мы передаем 3 переменные. После преобразования функция отображает результат.

Java
1
2
3
public void rgbToHsl(int r, int g, int b){
    //Code here...   
}
Я пробовал этот метод, но он почему-то работает некорректно:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static void rgb2hsl(int r, int g, int b) {
            double max = Math.max(Math.max(r, g), b); 
            double delta = max - Math.min(Math.min(r, g), b); 
            double h = 0;
            int s = 0;
            int l = (int) Math.round(max * 100d / 255d);
            if (max != 0) {
                s = (int) Math.round(delta * 100d / max); 
                if (max == r) {
                    h = (g - b) / delta;
                } else if (max == g) {
                    h = (g - r) / delta + 2d;
                } else {
                    h = (r - g) / delta + 4d; 
                }
                h = Math.min(Math.round(h * 60d), 360d); 
                if (h < 0d) {
                    h += 360d;
                }
            }
            HSL.setText(String.valueOf((int) Math.round(h)) + "°, " + Math.round(s) + "%, " + l + "%" );
        }
Вместо этого: 120°, 100%, 90% (#ccffcc)
Выводит это: 180°, 20%, 100%(#ffffff)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2022, 15:30
Ответы с готовыми решениями:

Как привязать цветовые координаты (rgb и hsl) к картинке
Подскажите пожалуйста!!! Как привязать цветовые координаты (rgb и hsl) к картинке в c++.

convert rgb to hsl
привет всем!! а как называется функция которая переводит RGB в HSL ? желательно с примером...и посоветуйте книгу на эту тему...

Конвертация RGB в HSL по формуле
Добрый день! Как переделать формулу (на фото которое я прикрепил) в чистый JavaScript? Кстати это формула RGB в HSL (форматы цветов).

3
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
08.06.2022, 15:42
https://docs.oracle.com/javase... t,%20float[])
0
Модератор
Эксперт Java
 Аватар для alecss131
2881 / 1387 / 411
Регистрация: 11.08.2017
Сообщений: 4,428
Записей в блоге: 2
08.06.2022, 16:09
Лучший ответ Сообщение было отмечено NP3 как решение

Решение

xoraxax, HSB != HSL

Написал метод с нуля как-то так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
   void rgb2hsl(int r, int g, int b) {
        float h, s, l;
        float r0 = r / 255.0f;
        float g0 = g / 255.0f;
        float b0 = b / 255.0f;
        int max = Math.max(r, Math.max(g, b));
        int min = Math.min(r, Math.min(g, b));
        int d = max - min;
        if (d == 0) {
            h = 0.0f;
            s = 0.0f;
            l = (max + min) * 100.0f / 2.0f / 255.0f;
        } else {
            l = (max + min) / 2.0f / 255.0f;
            float d0 = d / 255.0f;
            s = 100.0f * d0 / (1.0f - Math.abs(2 * l - 1.0f));
            if (max == r) {
                h = 60.0f * (g0 - b0) / d0;
            } else if (max == g) {
                h = 60.0f * ((b0 - r0) / d0 + 2.0f);
            } else {
                h = 60.0f * ((r0 - g0) / d0 + 4.0f);
            }
            if (h < 0) h += 360.0f;
            l *= 100.0f;
        }
        System.out.printf("%f\t%f%%\t%f%%\n", h, s, l);
    }
Сравнивал с онлайн конвертерами совпадает. Скажу так, сравнивать между собой float и double используя == плохая идея.
1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
08.06.2022, 16:30
Цитата Сообщение от alecss131 Посмотреть сообщение
xoraxax, HSB != HSL
понаплодили моделей, ъуъ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.06.2022, 16:30
Помогаю со студенческими работами здесь

Ошибка при переводе из RGB в HSL
Добрый день. Пытаюсь исправлять код, но выводит вот такую ошибку: System.ArgumentException: &quot;Значение '300' недопустимо для 'red'....

Перевести картинку из цветовой модели HSL в RGB
Может быть у кого того есть проект, где нужно превратить картинку из цветовой модели HSL в RGB , C# Windows Form?

GDI+ изменить насыщенность и яркость разложив RGB в HSL
не совсем понятно, как изменить у картинки насыщенность и яркость я взял пиксель в rgb, получил Color, и вытащил оттуда hue, saturation и...

Преобразование изображения из цветовой модели RGB в модель HSL
Всем доброго времени суток! Я учусь на программиста, и мне очень нужна ваша помощь. Что нужно для преобразования изображения из...

Как преобразовать RGB в sRGB?
Как реализовать алгоритм конвертации RGB (0-255) в sRGB (0-1) ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru