Текущий архив: 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