home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 May / CMCD0504.ISO / Software / Freeware / Programare / gdiplusdelphi / demos / Using Image Encoders and Decoders / Determining the Parameters Supported by an Encoder / Unit1.pas < prev   
Encoding:
Pascal/Delphi Source File  |  2002-02-15  |  1.7 KB  |  62 lines

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  7.   Dialogs, GDIPAPI, GDIPOBJ, GDIPUTIL, StdCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Memo1: TMemo;
  12.     procedure FormCreate(Sender: TObject);
  13.   private
  14.     { Private declarations }
  15.   public
  16.     { Public declarations }
  17.   end;
  18.  
  19. var
  20.   Form1: TForm1;
  21.  
  22. implementation
  23.  
  24. {$R *.dfm}
  25.  
  26. procedure TForm1.FormCreate(Sender: TObject);
  27. var
  28.     encoderClsid: TGUID;
  29.     listSize: UINT;
  30.     EncoderParameters: PEncoderParameters;
  31.     Bitmap: TGPBitmap;
  32. type
  33.   ArrEnParam = array of TEncoderParameter;
  34. begin
  35.    // Create Bitmap (inherited from Image) object so that we can call
  36.    // GetParameterListSize and GetParameterList.
  37.    Bitmap := TGPBitmap.Create(1,1, PixelFormat32bppARGB);
  38.  
  39.    // Get the JPEG encoder CLSID.
  40.    GetEncoderClsid('image/jpeg', encoderClsid);
  41.  
  42.    // How big (in bytes) is the JPEG encoder's parameter list?
  43.    listSize := Bitmap.GetEncoderParameterListSize(encoderClsid);
  44.    memo1.Lines.Add(format('The parameter list requires %d bytes.', [listSize]));
  45.  
  46.    // Allocate a buffer large enough to hold the parameter list.
  47.    getmem(EncoderParameters, listSize);
  48.  
  49.    // Get the parameter list for the JPEG encoder.
  50.    Bitmap.GetEncoderParameterList(encoderClsid, listSize, EncoderParameters);
  51.  
  52.    // pEncoderParameters points to an EncoderParameters object, which
  53.    // has a Count member and an array of EncoderParameter objects.
  54.    // How many EncoderParameter objects are in the array?
  55.    memo1.Lines.Add(format('There are %d EncoderParameter objects in the array.', [EncoderParameters.Count]));
  56.  
  57.    freemem(EncoderParameters, listSize);
  58.    Bitmap.Free;
  59. end;
  60.  
  61. end.
  62.