-
Notifications
You must be signed in to change notification settings - Fork 0
/
uexportimport.pas
47 lines (36 loc) · 1.02 KB
/
uexportimport.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
unit uexportimport;
interface
uses
udrawtim;
procedure SaveImage(const FileName: string; Surf: PDrawSurf; Indexed: Boolean);
function LoadImage(const FileName: string): PDrawSurf;
implementation
uses
FPReadPNG, Classes, BGRABitmap, FileUtil, sysutils, zstream, FPWritePNG;
procedure SaveImage(const FileName: string; Surf: PDrawSurf; Indexed: Boolean);
var
Writer: TFPWriterPNG;
begin
Writer := TFPWriterPNG.Create;
Writer.CompressionLevel := clnone;
Writer.UseAlpha := True;
Writer.Indexed := Indexed;
Surf^.SaveToFileUTF8(FileName, Writer);
Writer.Free;
end;
function LoadImage(const FileName: string): PDrawSurf;
var
Reader: TFPReaderPNG;
Stream: TFileStream;
begin
Reader := TFPReaderPNG.Create;
Stream := TFileStream.Create(UTF8ToSys(FileName), fmOpenRead or fmShareDenyWrite);
Stream.Position := 0;
New(Result);
Result^ := TBGRABitmap.Create;
Result^.UsePalette := True;
Reader.ImageRead(Stream, Result^);
Stream.Free;
Reader.Free;
end;
end.