Что нового

[Ошибки] Ошибки при обратной конвертации цвета

musicstashall

Знающий
Сообщения
322
Репутация
7
Всем доброго.
Впал в ступор, не пойму, с чего такие ошибки. Конвертирую цвет в HSL, потом обратно и получаю совсем другой цвет. Может туплю?? Развейте тучи, народ.

Код:
#include <Color.au3>
Local $Color = '0x170e0a'
Local $RGB = _ColorGetRGB($Color)
Local $HSL = _ColorConvertRGBtoHSL($RGB)
Local $_RGB = _ColorConvertHSLtoRGB($HSL)
$Color = StringFormat("%02X%02X%02X", $_RGB[0], $_RGB[1], $_RGB[2])
ConsoleWrite($Color&@CR)
; получаю 170D09
 
Автор
M

musicstashall

Знающий
Сообщения
322
Репутация
7
Решил проблему. Добавил Int

Код:
#include <Color.au3>
Local $Color = '0x170e0a'
Local $RGB = _ColorGetRGB($Color)
Local $HSL = _ColorConvertRGBtoHSL($RGB)
Local $_RGB = _ColorConvertHSLtoRGB($HSL)
ConsoleWrite(StringFormat("%02X%02X%02X", Int($_RGB[0]), Int($_RGB[1]), Int($_RGB[2]))&@CR)
 

Andrey_A

Продвинутый
Сообщения
319
Репутация
68
Решил проблему. Добавил Int
У меня Int не сработал - возможно что-то изменилось в последних версиях - помог String()
Код:
$Color=StringFormat('%02X%02X%02X',String($_RGB[0]),String($_RGB[1]),String($_RGB[2]))
MsgBox(4096,'Color','$Color =>'&$Color&'<=')
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Код:
Local $Color = '0x170e0a'
Red: 167, Green: 14, Blue: 10.
Код:
; получаю 170D09
Red 167, Green: 13, Blue: 9.
совсем другой цвет
Совсем другой?!! :shok:

Можно также конвертировать BMP в JPEG, а затем удивляться, что некоторые пиксели поменяли цвет. Не совсем то же самое, но всё же. Ну или на древнем микрокалькуляторе вычислить корень квадратный из двух, а результат снова возвести в квадрат, а получится почему-то не 2, а 1,9999999 или что-то в этом роде. На глаз-то эти цвета практически неразличимы. Этого недостаточно для практических нужд? Если нужна идеальная точность, то приближённые конвертации не годятся для такой цели. Но называть цвета 170E0A и 170D09 совсем разными это слишком жёсткий формализм.
Решил проблему. Добавил Int
Сомнительное "решение". Просто случайно округление оказалось нужного направления. С таким же успехом можно было получить ещё чуточку более далёкий цвет. Но всё равно практически неразличимый для глаза.
 
Последнее редактирование:
Верх