Конференция "KOL" » При копировании из 8 битного BMP в 24битный искажаются цвета [Delphi]
 
  • Noob (29.05.09 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 (29.05.09 18:41) [1]
    надо создать битмап как 24 битный изначально а источник как 8 битный
    типа NewDIBBitmap(0,0,pf24bit)

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

    но это тока предположение
 
Конференция "KOL" » При копировании из 8 битного BMP в 24битный искажаются цвета [Delphi]
Есть новые Нет новых   [134431   +12][b:0][p:0.001]