Skip to main navigation Zum Hauptinhalt springen Skip to page footer
pascal
 1unit MainForm;
 2
 3interface
 4
 5uses
 6  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ExtDlgs,
 7  Menus, TL.Components, CCR.Exif;
 8
 9type
10  TForm1 = class(TLForm)
11    OpenPictureDialog1: TOpenPictureDialog;
12    Panel1: TPanel;
13    Panel3: TPanel;
14    Panel4: TPanel;
15    Panel5: TPanel;
16    Image1: TImage;
17    ExifStr: TEdit;
18    procedure Copy1Click(Sender: TObject);
19    procedure Open1Click(Sender: TObject);
20    procedure FormKeyDown(
21      Sender: TObject;
22      var Key: Word;
23      Shift: TShiftState);
24    procedure FormCreate(Sender: TObject);
25  private
26    { Private declarations }
27  public
28    { Public declarations }
29  end;
30
31var
32  Form1: TForm1;
33
34implementation
35
36{$R *.dfm}
37
38procedure TForm1.Copy1Click(Sender: TObject);
39begin
40  Self.ExifStr.SelectAll;
41  Self.ExifStr.CopyToClipboard;
42end;
43
44procedure TForm1.FormCreate(Sender: TObject);
45begin
46  Caption:= 'Exif Extractor ' + Folder.AppVersion +
47    ' - © 2021 Theo Langstraat   |   Open (Ctrl-O)   Copy Exif to Clipboard (Ctrl-C)';
48end;
49
50procedure TForm1.FormKeyDown(
51  Sender: TObject;
52  var Key: Word;
53  Shift: TShiftState);
54const
55  KeyO = Ord('O');
56  KeyC = Ord('C');
57begin
58  if ssCtrl in Shift then
59    begin
60      if Key = KeyO then
61        Self.Open1Click(Self)
62      else if Key = KeyC then
63        Self.Copy1Click(Self);
64    end;
65end;
66
67procedure TForm1.Open1Click(Sender: TObject);
68var
69  ExifData: TExifData;
70  Aperture: double;
71  ExifInfo, FocalLength, ShutterSpeed: string;
72const
73  DateFormat = 'dd-mm-yyyy';
74begin
75  if OpenPictureDialog1.Execute then
76    begin
77      if FileExists(OpenPictureDialog1.FileName) then
78        begin
79          ExifStr.Text:= '';
80          ExifData:= TExifData.Create;
81          try
82            try
83              ExifData.LoadFromGraphic(OpenPictureDialog1.FileName);
84              Panel3.Caption:= 'Filename: ' + OpenPictureDialog1.FileName;
85              Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
86
87              Aperture:= ExifData.FNumber.Numerator / ExifData.FNumber.Denominator;
88              ShutterSpeed:= ExifData.ExposureTime.ToString;
89              FocalLength:= ExifData.FocalLength.ToString;
90
91              ExifInfo:= Format(
92                'f/%.1f   %s   ISO-%s   @ %s   |   %s   %s   |   %s',
93                [Aperture, ShutterSpeed, ExifData.ISOSpeedRatings.ToString, FocalLength, ExifData.CameraModel,
94                ExifData.LensModel, ExifData.DateTimeOriginal.ToString(DateFormat)]);
95
96              ExifStr.Text:= ExifInfo;
97            except
98              on E: Exception do
99                raise Exception.Create('Error loading EXIF data: ' + E.Message);
100            end;
101          finally
102            ExifData.Free;
103          end;
104        end
105      else
106        raise Exception.Create('File does not exist.');
107    end;
108end;
109
110end.