![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
При копировании из 8 битного BMP в 24битный искажаются цвета [Delphi]
Noob © (2009-05-29 16:40:00)Здравствуйте!
Хотел написать программу которая из нескольких ВМР с 8-битным цветом составляет больший по размеру 24 битный. Пытался использовать CopyRect, но в результате получается, что цвета исходного BMP немного, но всё-таки искажаются. Например, вот такой код
procedure TForm1.Button1Click(Sender: PObj);
var Bmp1,Bmp2:PBitmap;
begin
Bmp1:=NewBitmap(0,0);
Bmp2:=NewBitmap(0,0);
Bmp1.LoadFromFile('test8bpp.bmp');
Bmp2.Width:=Bmp1.Width;
Bmp2.Height:=Bmp1.Height;
Bmp2.CopyRect(Bmp2.BoundsRect,Bmp1,Bmp1.BoundsRect);
Bmp2.SaveToFile('test24bpp.bmp');
Bmp1.Free;
Bmp2.Free;
end;
создаёт из 8-битного 'test8bpp.bmp' равный по размеру 'test24bpp.bmp', но цвета в нем немного искажены.
Что не так делаю? Или это не баг, а фича? Можно это как-то победить?
Помогите пожалуйста. Тестовый бмп могу где-нибудь выложить.
QAZ (2009-05-29 18:41:00) [1]надо создать битмап как 24 битный изначально а источник как 8 битный
типа NewDIBBitmap(0,0,pf24bit)
а у тебя получается
что либо копируеш 8 битный в 8 битный в итоге берется палитра либо первого скопированного либо последнего
либо системная палитра палитра используеца в приемнике а в файлах собственая палитра
но это тока предположение