本例效果图:
代码文件:
代码文件:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) OpenDialog1: TOpenDialog; Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormPaint(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses GDIPOBJ, GDIPAPI, GDIPUTIL; const OpenFileFilter = 'GDI+ 全部可以读取的图片格式|*.png;*.jpg;*.gif;*.bmp;*.tif;*.emf;*.wmf;*.ico' + '|*.png|*.png' + '|*.jpg|*.jpg' + '|*.gif|*.gif' + '|*.bmp|*.bmp' + '|*.tif|*.tif' + '|*.emf|*.emf' + '|*.wmf|*.wmf' + '|*.ico|*.ico'; ArrExt: array[0..4] of String = ('.png', '.jpg', '.gif', '.bmp', '.tif'); ArrEncodeName: array[0..4] of String = ('image/png', 'image/jpeg', 'image/gif', 'image/bmp', 'image/tiff'); var FileName: string; img: TGPImage; procedure TForm1.FormCreate(Sender: TObject); begin img := TGPImage.Create; Button1.Caption := '打开'; Button2.Caption := '保存'; end; procedure TForm1.FormDestroy(Sender: TObject); begin img.Free; end; procedure TForm1.FormPaint(Sender: TObject); var g: TGPGraphics; begin if FileName <> '' then begin g := TGPGraphics.Create(Canvas.Handle); g.DrawImage(img, 10, 10, img.GetWidth, img.GetHeight); g.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin OpenDialog1.Filter := OpenFileFilter; if OpenDialog1.Execute then begin FileName := OpenDialog1.FileName; img.Free; img := TGPImage.Create(FileName); Repaint; end; end; procedure TForm1.Button2Click(Sender: TObject); var ImgGUID: TGUID; i: Integer; begin if FileName = '' then begin ShowMessage('先要打开文件'); Exit; end; {一次性保存为 5 种可能的格式} for i := 0 to 4 do begin GetEncoderClsid(ArrEncodeName[i], ImgGUID); {先获取格式编码} img.Save(ChangeFileExt(FileName, ArrExt[i]), ImgGUID); end; Beep; end; end.窗体文件:
object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 207 ClientWidth = 299 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False Position = poDesktopCenter OnCreate = FormCreate OnDestroy = FormDestroy OnPaint = FormPaint PixelsPerInch = 96 TextHeight = 13 object Button1: TButton Left = 135 Top = 174 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 0 OnClick = Button1Click end object Button2: TButton Left = 216 Top = 174 Width = 75 Height = 25 Caption = 'Button2' TabOrder = 1 OnClick = Button2Click end object OpenDialog1: TOpenDialog Left = 152 Top = 104 end end