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