由于项目需要,需要将png格式的图片转换为jpg格式的图片,方法如下:
MyImg := TMemoryStream.Create;
MyImg.LoadFromFile(Local_path+Img);
MyImg.Position := 0;
if MyImg.Size <= 0 then
begin
MyImg.Free;
continue;
end;
MyImg.ReadBuffer(lBuf, 2);
if lBuf = $4D42 then
begin
bmp := TBitmap.Create;
jpg := TJpegImage.Create; //引入单元jpeg
try
bmp .LoadFromStream(Local_path+Img);
jpg.Assign(bmp);
jpg.SaveToFile(Local_path+Img);
finally
FreeAndNil(jpg);
FreeAndNil(bmp);
end;
end
else
//如果是png格式的图片,先转化为bmp格式,然后再转化为jpg(直接从png到jpg会报错)
if lBuf = $5089 then
begin
png := TPNGObject.Create; //引入单元pngimage
bmp := TBitmap.Create;
jpg := TJpegImage.Create;
try
png.LoadFromFile(Local_path+Img);
bmp.Assign(png);
jpg.Assign(bmp);
jpg.SaveToFile(Local_path+Img);
finally
FreeAndNil(png);
FreeAndNil(bmp);
FreeAndNil(jpg);
end;
end;
MyImg.Destroy;