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.