Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.04;
Скачать: CL | DM;

Вниз

Вот такой вот интересный вопрос...   Найти похожие ветки 

 
cypher ©   (2002-06-20 00:20) [0]

... как преобразовать цвет из TrueColor в 256 цветов? Тоесть, имеем RGB = {255,255,255), нада получить RGB(8,8,8). Очень нужно!


 
AK-74 ©   (2002-06-20 03:21) [1]

А просто разделить на 32 нельзя?


 
MBo ©   (2002-06-20 06:51) [2]

В 256-режиме нужно создавать палитру


 
MBo ©   (2002-06-20 07:41) [3]

BTW, битмап проще всего перевести в 256 так

ABitmap.PixelFormat:=pf8bit;


 
cypher ©   (2002-06-20 19:36) [4]

Неее... обьясню задачу..
У меня есть цвет RGB - три числа Red, Green и Blue...
Мне нужно не меняя палитры найти наиболее подходящий цвет в 256 цветах...
Ну как в Paint"e открыть какой-нить 24битный bmp-файл и сохранить его в 256-цветном варианте, только мне не картинку нада преобразовать, а всего ОДИН цвет. Помогите плиз, очень нужно победить эту задачу.


 
MBo ©   (2002-06-20 20:18) [5]

256 цветов могут быть разными


 
AK-74 ©   (2002-06-21 00:09) [6]

Я же говорю: надо делить (а не с поллитрами работать :)

function RGB_To_256(r,g,b: Integer): Integer;
begin
result := r div 32 * 32 + g div 32 * 4 + b div 64
end;


 
MBo ©   (2002-06-21 06:36) [7]

>Мне нужно не меняя палитры найти наиболее подходящий цвет в 256 цветах...
Изучи функции работы с палитрами. 8-бит палитра состоит из 256 элементов TRGBQuad, т.е. каждому НОМЕРУ цвета соответствует некое соотношение R,G и B. Получи палитру, сравни составляющие своего цвета со всеми элементами палитры, по некому критерию макс. правдоподобия найди номер ближайшего цвета.

Вот пример для обратной задачи- задание серой палитры.
Функций для работы с палитрами много (WinSDK Help)

procedure TForm1.Button1Click(Sender: TObject);
var a:array[0..255,0..255] of byte;
ct:array[0..255] of TRGBQuad;
b:tbitmap;
i,j:integer;
begin
b:=tbitmap.create;
b.pixelformat:=pf8bit;
b.Width := 256;
b.Height := 256;
for i:=0 to 255 do begin
ct[i].rgbRed:=i;
ct[i].rgbBlue:=i;
ct[i].rgbGreen:=i;
ct[i].rgbReserved:=0;
end;
for i:=0 to 255 do for j:=0 to 255 do a[i,j]:=trunc(sqrt(i*j));
SetDIBColorTable(b.canvas.Handle,0,$100,ct);
SetBitmapBits(b.Handle, sizeof(a),@a);
Image1.picture.assign(b);
b.free;
end;



Страницы: 1 вся ветка

Текущий архив: 2002.07.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
1-9771
{bas}
2002-06-20 12:47
2002.07.04
превод integer в массив byte


1-9811
tovSuhov
2002-06-24 10:12
2002.07.04
Вот ведь задачка...


3-9742
BJValentine
2002-06-12 12:31
2002.07.04
MS Sql


1-9872
IgoX
2002-06-19 21:51
2002.07.04
Drag Drop


3-9711
PTE
2002-06-10 09:02
2002.07.04
Помогите с Insert разобраться