IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> RGB --> 256, переход между палитрами
сообщение
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Добрый день!
Собственно нужна функция на ФП которая получая RGB-параметры возвращала бы номер этого(или максимально близкого к этому цвету) в стандартной палитре. [ RGBToP(const r, g, b:word):word; ]
Желательно БЕЗ использования асм.
Поиск особых результатов не дал(кроме не к чему не ведущей темы 2003-года)

заранее благодарен


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской

Репутация: -  0  +


Ответ-велосипед. Функция, которая требовалась изначально.
Все комментарии были написаны раньше.

const
MAX_PALETTE_INDEX = 255;
type
TRGB = record
Red, Green, Blue : Byte
end;
TRGBPalette = array[0..MAX_PALETTE_INDEX] of TRGB;

function GetNearestPaletteIndex( RGBPalette : TRGBPalette; X : TRGB ) : Integer;
var
DD, MinDD : LongInt;
I, Index : Integer;
begin
Index := 0;
MinDD :=
Sqr(LongInt(X.Red) - RGBPalette[Index].Red) +
Sqr(LongInt(X.Green) - RGBPalette[Index].Green) +
Sqr(LongInt(X.Blue) - RGBPalette[Index].Blue);
for I := 1 to MAX_PALETTE_INDEX do
begin
DD :=
Sqr(LongInt(X.Red) - RGBPalette[I].Red) +
Sqr(LongInt(X.Green) - RGBPalette[I].Green) +
Sqr(LongInt(X.Blue) - RGBPalette[I].Blue);
if MinDD > DD then
begin
MinDD := DD;
Index := I
end
end;
GetNearestPaletteIndex := Index
end;



Сообщение отредактировано: Neznaika -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.02.2023 0:32
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name