unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ExtDlgs,
Menus, TL.Components, CCR.Exif;
type
TForm1 = class(TLForm)
OpenPictureDialog1: TOpenPictureDialog;
Panel1: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Image1: TImage;
ExifStr: TEdit;
procedure Copy1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure FormKeyDown(
Sender: TObject;
var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Copy1Click(Sender: TObject);
begin
Self.ExifStr.SelectAll;
Self.ExifStr.CopyToClipboard;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption:= 'Exif Extractor ' + Folder.AppVersion +
' - © 2021 Theo Langstraat | Open (Ctrl-O) Copy Exif to Clipboard (Ctrl-C)';
end;
procedure TForm1.FormKeyDown(
Sender: TObject;
var Key: Word;
Shift: TShiftState);
const
KeyO = Ord('O');
KeyC = Ord('C');
begin
if ssCtrl in Shift then
begin
if Key = KeyO then
Self.Open1Click(Self)
else if Key = KeyC then
Self.Copy1Click(Self);
end;
end;
procedure TForm1.Open1Click(Sender: TObject);
var
ExifData: TExifData;
Aperture: double;
ExifInfo, FocalLength, ShutterSpeed: string;
const
DateFormat = 'dd-mm-yyyy';
begin
if OpenPictureDialog1.Execute then
begin
if FileExists(OpenPictureDialog1.FileName) then
begin
ExifStr.Text:= '';
ExifData:= TExifData.Create;
try
try
ExifData.LoadFromGraphic(OpenPictureDialog1.FileName);
Panel3.Caption:= 'Filename: ' + OpenPictureDialog1.FileName;
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Aperture:= ExifData.FNumber.Numerator / ExifData.FNumber.Denominator;
ShutterSpeed:= ExifData.ExposureTime.ToString;
FocalLength:= ExifData.FocalLength.ToString;
ExifInfo:= Format(
'f/%.1f %s ISO-%s @ %s | %s %s | %s',
[Aperture, ShutterSpeed, ExifData.ISOSpeedRatings.ToString, FocalLength, ExifData.CameraModel,
ExifData.LensModel, ExifData.DateTimeOriginal.ToString(DateFormat)]);
ExifStr.Text:= ExifInfo;
except
on E: Exception do
raise Exception.Create('Error loading EXIF data: ' + E.Message);
end;
finally
ExifData.Free;
end;
end
else
raise Exception.Create('File does not exist.');
end;
end;
end.