Olá galera, nesta dica irei mostrar como converter imagens em JPG para BMP, e fazer o BMP para JPG.


Vamos ao exemplo:


Adicione dois Buttons(BtnJPG_BMP, BtnBMP_JPG) e um OpenDialog


Iremos dar Uses JPeg.

 

Irei implementar dois procedures.

 

    procedure ConvertJPG_BMP(xFile: string);

    procedure ConvertBMP_JPG(xFile: string; Quality : Integer );

 

ConvertJPG_BMP

procedure TFrmPrincipal.ConvertJPG_BMP(xFile: string);

var

  BMP: TBitmap;

  JPG: TJPegImage;

begin

  if ExtractFileExt(xFile) <> '.jpg' then

  begin

   ShowMessage('Formato diferente de jpg'+#13+

   'Formato atual : ' + ExtractFileExt(xFile));

  Exit;

  end;

  JPG := TJPegImage.Create;

  try

   JPG.LoadFromFile(xFile);

   BMP := TBitmap.Create;

   try

    BMP.Assign(JPG);

    BMP.SaveToFile(ChangeFileExt(xFile, '.bmp'));

   finally

     FreeAndNil(BMP);

   end;

  finally

   FreeAndNil(JPG);

  end;

end;

 

ConvertBMP_JPG

procedure TFrmPrincipal.ConvertBMP_JPG(xFile: string; Quality : Integer );

var

  BMP: TBitmap;

  JPG: TJPegImage;

begin

  if ExtractFileExt(xFile) <> '.bmp' then

  begin

    ShowMessage('Formato diferente de bmp'+#13+

   'Formato atual : ' + ExtractFileExt(xFile));

    Exit;

  end;

  BMP := TBitmap.Create;

  try

    BMP.LoadFromFile(xFile);

    JPG := TJPegImage.Create;

    try

     JPG.CompressionQuality := Quality;

     JPG.Assign(BMP);

     JPG.SaveToFile(ChangeFileExt(xFile, '.jpg'));

    finally

     FreeAndNil(JPG);

    end;

   finally

     FreeAndNil(BMP);

   end;

end;

 

Iremos implementar agora o clique dos dois Buttons

 

BtnBMP_JPG

procedure TFrmPrincipal.BtnBMP_JPGClick(Sender: TObject);

begin

  {Filtrar os arquivos do OpenDialog1 para exibir somente BMP} 

  OpenDialog1.Filter := 'bmp|*.bmp';

  if OpenDialog1.Execute then

    ConvertBMP_JPG(OpenDialog1.FileName, 100);

end;

 

 

BtnJPG_BMP

procedure TFrmPrincipal.BtnJPG_BMPClick(Sender: TObject);

begin

   {Filtrar os arquivos do OpenDialog1 para exibir somente JPG} 

  OpenDialog1.Filter := 'jpg|*.jpg';

  if OpenDialog1.Execute then

    ConvertJPG_BMP(OpenDialog1.FileName);

end;

 

Obs : Será criado um arquivo com o mesmo nome para as duas rotinas, porém com a extensão oposta, bmp para jpg, e jpg para bmp

 

Fico por aqui ate à próxima Quick Tips.

 

Um abraço

 

Wesley Y

wyamazack@rwsolution.com.br