Главная страница
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.015 c
14-9964
kami
2002-06-02 20:30
2002.07.04
Дипломная сегодня утром, Дипломная .....


1-9822
Aleksandr
2002-06-24 16:28
2002.07.04
Как сделать условия в except?


3-9749
sergeyka
2002-06-12 22:26
2002.07.04
Проблема экспорта в Excel из TQuery


1-9775
Scroll
2002-06-22 20:23
2002.07.04
Вопрос о другом методе создания скинов


4-10063
BAHO
2002-05-04 04:49
2002.07.04
Драйвер Клавы & Мыши