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

Вниз

При копировании из 8 битного BMP в 24битный искажаются цвета   Найти похожие ветки 

 
Noob   (2009-05-29 16:40) [0]

Здравствуйте!
Хотел написать программу которая из нескольких ВМР с 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) [1]

надо создать битмап как 24 битный изначально а источник как 8 битный
типа NewDIBBitmap(0,0,pf24bit)

а у тебя получается
что либо копируеш 8 битный в 8 битный в итоге берется палитра либо первого скопированного либо последнего
либо системная палитра палитра используеца в приемнике а в файлах собственая палитра

но это тока предположение



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

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

Наверх




Память: 0.46 MB
Время: 0.006 c
8-1222425668
M3
2008-09-26 14:41
2012.04.08
Формат WAV GSM 6.10 Определить длительность звучания


2-1323956306
Besonder
2011-12-15 17:38
2012.04.08
HTTP connection


15-1323353360
Artem
2011-12-08 18:09
2012.04.08
Строки в паскале


11-1206012968
Nikfel
2008-03-20 14:36
2012.04.08
Как вывести окно с прозрачным цветом.


2-1324028884
Alatiel
2011-12-16 13:48
2012.04.08
помогите пожалуйста решить задачку по delphi