- - * - WhiteUnicorn - * - -




* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >


Frequently Asked Questions

Displaying a 24 bit True Color bitmap image on a 256 color display

Question:

How can I display a 24 bit True Color bitmap image on a 256 color Display under Delphi 3?

Answer:

You can take advantage of the new graphics capabilities of the

TBimap and TJpegImage components of Delphi 3. When Delphi 3 loads a

bitmap image, it keeps a copy of the device independent bitmap image

it loads from a file in the background. The TJPEGImage component is

very good at color reducing a full color image down to 256 colors.

By Loading the bitmap, then assigning the image to a Jpeg and saving

it to a temporary ".JPG" file, you can then load the temporary file

back into a TImage with much better results than simply loading the

bitmap file unconverted. The following example demonstrates the

necessary steps to achieve these results.



Example:



uses JPEG;



procedure TForm1.Button1Click(Sender: TObject);

var

  JP : TJPEGImage;

  IM : TImage;

  TempFileName : string;

begin

 {Pop up a Open Dialog}

  OpenDialog1.Options := [ofNoChangeDir, ofFileMustExist];

  OpenDialog1.Filter := 'Bitmap Files (*.bmp)|*.bmp';

  if OpenDialog1.Execute then begin

   {Create a temporary TImage}

    IM := TImage.Create(nil);

   {Load the bitmap file}

    IM.Picture.LoadFromFile(OpenDialog1.FileName);

   {Create a temporary TJPEGImage}

    JP := TJPEGImage.Create;

   {Priorty on quality}

    JP.Performance := jpBestQuality;

   {Assign the bitmap to the JPEG}

    JP.Assign(IM.Picture.Graphic);

   {Free the temp image}

    IM.Free;

   {Make a temp file name with the extension of .jpg}

    TempFileName := 'test.jpg';

   {Save the JPEG to a temp file}

    JP.SaveToFile(TempFileName);

   {Free the JPEG}

    JP.Free;

   {Load the temp file to an image on the form}

    Image1.Picture.LoadFromFile(TempFileName);

   {Delete the temp file}

    DeleteFile(TempFileName);

  end;

end;



* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >



- - * - Anastasija aka WhiteUnicorn - * - - LJLiveJournal
PFPhotoFile