-
Notifications
You must be signed in to change notification settings - Fork 18
Converting from TBitmap to TPNGObject
JoseJimeniz edited this page Jun 12, 2013
·
1 revision
TPNGObject provides flexibility by allowing to convert from a Bitmap file format to Portable Network Graphics format.
This is easily done like in the same way as any graphic class in delphi.
IMPORTANT: Always remember to add pngimage to the unit uses.
Converting from Windows bitmap file to PNG file
This method loads a bitmap and saves it using png format
procedure BitmapFileToPNG(const Source, Dest: String);
var
Bitmap: TBitmap;
PNG: TPNGObject;
begin
Bitmap := TBitmap.Create;
PNG := TPNGObject.Create;
{In case something goes wrong, free booth Bitmap and PNG}
try
Bitmap.LoadFromFile(Source);
PNG.Assign(Bitmap); //Convert data into png
PNG.SaveToFile(Dest);
finally
Bitmap.Free;
PNG.Free;
end
end;
Converting from PNG file to Windows bitmap file
The above inverse. Loads a png and saves into a bitmap
procedure PNGFileToBitmap(const Source, Dest: String);
var
Bitmap: TBitmap;
PNG: TPNGObject;
begin
PNG := TPNGObject.Create;
Bitmap := TBitmap.Create;
{In case something goes wrong, free booth PNG and Bitmap}
try
PNG.LoadFromFile(Source);
Bitmap.Assign(PNG); //Convert data into bitmap
Bitmap.SaveToFile(Dest);
finally
PNG.Free;
Bitmap.Free;
end
end;
Converting from TImage to PNG file
This method converts from TImage to PNG. It has full exception handling and allows
converting from file formats other than TBitmap (since they allow assigning to a TBitmap)
procedure TImageToPNG(Source: TImage; const Dest: String);
var
PNG: TPNGObject;
BMP: TBitmap;
begin
PNG := TPNGObject.Create;
{In case something goes wrong, free PNG}
try
//If the TImage contains a TBitmap, just assign from it
if Source.Picture.Graphic is TBitmap then
PNG.Assign(TBitmap(Source.Picture.Graphic)) //Convert bitmap data into png
else begin
//Otherwise try to assign first to a TBimap
BMP := TBitmap.Create;
try
BMP.Assign(Source.Picture.Graphic);
PNG.Assign(BMP);
finally
BMP.Free;
end;
end;
//Save to PNG format
PNG.SaveToFile(Dest);
finally
PNG.Free;
end
end;