You do not have to call ImageEnIO1.LoadFromFile('.\1.jpg')
followed by ImageEnIO1.ParamsFromFile('.\1.jpg');. It is not necessary or wise to do.
I was mistaken.... Even though you have iexEXIFRoutines in uses you have to take the types and const from iexEXIFRoutines and paste them into your unit.
If you used a stringgrid, instead of a memo there are functions in iexEXIFRoutines that fills the grid with EXIF parameters and the image's EXIF values for you with 2 lines of code.
This code was compiled and tested with Delphi 2010. In any event here is the code to fill a TMemo with EXIF info:
unit Unit1;
interface
uses
WinApi.Windows, WinApi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms,
Vcl.Dialogs, Vcl.StdCtrls, imageenio, Vcl.ExtDlgs, Vcl.Jpeg;
type
EXIF_Item = record
private
public
Description: string;
VarType: Integer;
Editable: boolean;
end;
TForm1 = class(TForm)
OpenPictureDialog1: TOpenPictureDialog;
ImageEnIO1: TImageEnIO;
Memo1: TMemo;
Open: TButton;
procedure OpenClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses iexEXIFRoutines;
{$R *.dfm}
resourcestring
// EXIF Data
s_UserComment = 'User Comment';
s_Description = 'Description';
s_Camera = 'Camera';
s_Orientation = 'Camera Orientation';
s_Inch = 'Inch';
s_CM = 'cm';
s_XResolution = 'Horizontal Resolution';
s_Yresolution = 'Vertical Resolution';
s_DateTime = 'Date and Time';
s_DateTimeOriginal = 'Original Date and Time';
s_DateTimeDigitized = 'Digitized Date and Time';
s_Copyright = 'Copyright';
s_ExposureTime = 'Exposure Time';
s_FNumber = 'F-Stop';
s_ExposureProgram = 'Exposure Program';
s_ManualControl = 'Manual';
s_ProgramNormal = 'Normal';
s_AperturePriority = 'Aperture Priority';
s_ShutterPriority = 'Shutter Priority';
s_CreativeProgram = 'Creative Program';
s_ActionProgram = 'Action Program';
s_Portraitmode = 'Portrait Mode';
s_LandscapeMode = 'Landscape Mode';
s_CompressedBitsPerPixel = 'Compression Ratio';
s_ShutterSpeedValue = 'Shutter Speed';
s_ApertureValue = 'Aperture Value';
s_ISOSpeedRatings = 'ISO Speed Rating';
s_BrightnessValue = 'Brightness';
s_ExposureBiasValue = 'Exposure Compensation';
s_MaxApertureValue = 'Max Aperture Value';
s_SubjectDistance = 'Subject Distance';
s_MeteringMode = 'Metering Mode';
s_average = 'Average';
s_CenterWeightedAverage = 'Center-weighted Average';
s_Spot = 'Spot';
s_MultiSpot = 'Multi-Spot';
s_MultiSegment = 'Multi-Segment';
s_partial = 'Partial';
s_WhiteBalance = 'Lighting';
s_daylight = 'Daylight';
s_fluorescent = 'Flourescent';
s_tungsten = 'Tungsten';
s_flash = 'Flash';
s_standardLightA = 'Standard Light A';
s_standardLightB = ' Standard Light B';
s_standardLightC = ' Standard Light C';
s_D55 = 'D55';
s_D65 = 'D65';
s_D75 = 'D75';
s_FlashDidNotFire = 'Not Used';
s_flashFired = 'Fired';
s_flashFiredNoStrobeLight = 'Fired, No Strobe Return';
s_flashFiredStrobeLight = 'Fired, with Strobe Return';
s_FocalLength = 'Focal Length';
s_FlashPixVersion = 'FlashPix Version';
s_ColorSpace = 'Color Space';
s_RGB = 'RGB';
s_Uncalibrated = 'Uncalibrated';
s_ExifImageWidth = 'Image Width';
s_ExifImageHeight = 'Image Height';
s_RelatedSoundFile = 'Sound File';
s_FocalPlaneXResolution = 'Focal Plane Horz. Resolution';
s_FocalPlaneYResolution = 'Focal Plane Vert. Resolution';
s_ExposureIndex = 'Exposure Index';
s_SensingMethod = 'Sensing Method';
s_OneChipColorAreaSensor = 'Single Chip Color Area';
s_UnknownMethod = 'Unknown Method';
s_FileSource = 'File Source';
s_DigitalStillCamera = 'Digital Still Camera';
s_UnknownDevice = 'Unknown Device';
s_SceneType = 'Scene Type';
s_DirectlyPhotographed = 'Directly Photographed';
s_YcbCrPositioning = 'Chroma Sample Point';
s_Centered = 'Centered';
s_DataPoint = 'Data Point';
s_Seconds = 'Seconds';
s_Second = 'Second';
s_EXIFOrientation1 = 'Orientated Correctly';
s_EXIFOrientation2 = 'Horizontally Flipped';
s_EXIFOrientation3 = 'Offset by 180°';
s_EXIFOrientation4 = 'Vertically Flipped';
s_EXIFOrientation5 = 'Flipped Horiz. and Offset 90° CCW';
s_EXIFOrientation6 = 'Offset by 90° CCW';
s_EXIFOrientation7 = 'Flipped Horiz. and Offset 90° CW';
s_EXIFOrientation8 = 'Offset by 90° Clockwise';
s_ExposureMode = 'Exposure Mode';
s_DigitalZoomRatio = 'Digital Zoom Ratio';
s_FocalLengthIn35mmFilm = 'Focal Length in 35mm Film';
s_SceneCaptureType = 'Scene Capture Type';
s_GainControl = 'Gain Control';
s_Contrast = 'Contrast';
s_Saturation = 'Saturation';
s_Sharpness = 'Sharpness';
s_SubjectDistanceRange = 'Subject Distance';
s_GPSLatitude = 'GPS Latitude'; // Degrees
s_GPSLongitude = 'GPS Longitude'; // Degrees
s_GPSAltitude = 'GPS Altitude';
s_GPSImageDirection = 'GPS Image Direction';
s_GPSTrack = 'GPS Movement Direction';
s_GPSSpeed = 'GPS Movement Speed';
s_GPSDateAndTime = 'GPS Date and Time';
s_GPSSatellites = 'GPS Satellites';
s_GPSVersionID = 'GPS Version';
s_AutoExposure = 'Auto exposure';
s_ManualExposure = 'Manual exposure';
s_AutoBracket = 'Auto bracket';
s_Autowhitebalance = 'Auto white balance';
s_Manualwhitebalance = 'Manual white balance';
s_Standard = 'Standard';
s_Landscape = 'Landscape';
s_Portrait = 'Portrait';
s_NightScene = 'Night scene';
s_None = 'None';
s_LowGainup = 'Low gain up';
s_HighGainup = 'High gain up';
s_LowGaindown = 'Low gain down';
s_HighGaindown = 'High gain down';
s_Normal = 'Normal';
s_Soft = 'Soft';
s_Hard = 'Hard';
s_LowSaturation = 'Low saturation';
s_HighSaturation = 'High saturation';
s_Macro = 'Macro';
s_CloseView = 'Close view';
s_DistantView = 'Distant view';
s_Artist = 'Artist';
s_XPTitle = 'Title (Windows)';
s_XPComment = 'Comment (Windows)';
s_XPAuthor = 'Author (Windows)';
s_XPKeywords = 'Keywords (Windows)';
s_XPSubject = 'Subject (Windows)';
s_XPRating = 'Rating (Windows)';
const
_vString=1;
_vInteger=2;
_vDouble=3;
Maybe=false;
EXIF: array[0.._EXIF_Tag_Count - 1] of EXIF_Item = (
(Description: s_UserComment; VarType: _vString; Editable: TRUE), // _EXIF_UserComment=0;
(Description: s_Description; VarType: _vString; Editable: TRUE), // _EXIF_ImageDescription=1;
(Description: s_Camera; VarType: _vString; Editable: TRUE), // _EXIF_Camera
(Description: s_XResolution; VarType: _vDouble; Editable: FALSE), // _EXIF_XResolution=4;
(Description: s_YResolution; VarType: _vDouble; Editable: FALSE), // _EXIF_YResolution=5;
(Description: s_DateTime; VarType: _vString; Editable: TRUE), // _EXIF_DateTime=7;
(Description: s_DateTimeOriginal; VarType: _vString; Editable: TRUE),
// _EXIF_DateTimeOriginal=8;
(Description: s_DateTimeDigitized; VarType: _vString; Editable: TRUE),
// _EXIF_DateTimeDigitized=9;
(Description: s_Copyright; VarType: _vString; Editable: TRUE), // _EXIF_Copyright=10;
(Description: s_Orientation; VarType: _vInteger; Editable: FALSE), // _EXIF_Orientation=11;
(Description: s_ExposureTime; VarType: _vDouble; Editable: Maybe), // _EXIF_ExposureTime=12;
(Description: s_FNumber; VarType: _vDouble; Editable: Maybe), // _EXIF_FNumber=13;
(Description: s_ExposureProgram; VarType: _vInteger; Editable: Maybe),
// _EXIF_ExposureProgram=14;
(Description: s_ISOSpeedRatings; VarType: _vInteger; Editable: Maybe),
// _EXIF_ISOSpeedRatings[index=15;
(Description: s_ShutterSpeedValue; VarType: _vDouble; Editable: Maybe),
// _EXIF_ShutterSpeedValue=17;
(Description: s_ApertureValue; VarType: _vDouble; Editable: Maybe), // _EXIF_ApertureValue=18;
(Description: s_BrightnessValue; VarType: _vDouble; Editable: Maybe),
// _EXIF_BrightnessValue=19;
(Description: s_ExposureBiasValue; VarType: _vDouble; Editable: Maybe),
// _EXIF_ExposureBiasValue=20;
(Description: s_MaxApertureValue; VarType: _vDouble; Editable: Maybe),
// _EXIF_MaxApertureValue=21;
(Description: s_SubjectDistance; VarType: _vDouble; Editable: Maybe),
// _EXIF_SubjectDistance=22;
(Description: s_MeteringMode; VarType: _vInteger; Editable: FALSE), // _EXIF_MeteringMode=23;
(Description: s_WhiteBalance; VarType: _vInteger; Editable: FALSE), // _EXIF_LightSource=24;
(Description: s_Flash; VarType: _vInteger; Editable: FALSE), // _EXIF_Flash=25;
(Description: s_FocalLength; VarType: _vDouble; Editable: TRUE), // _EXIF_FocalLength=26;
(Description: s_FlashPixVersion; VarType: _vString; Editable: TRUE),
// _EXIF_FlashPixVersion=27;
(Description: s_ColorSpace; VarType: _vInteger; Editable: FALSE), // _EXIF_ColorSpace=28;
(Description: s_ExifImageWidth; VarType: _vInteger; Editable: TRUE), // _EXIF_ExifImageWidth=29;
(Description: s_ExifImageHeight; VarType: _vInteger; Editable: TRUE),
// _EXIF_ExifImageHeight=30;
(Description: s_RelatedSoundFile; VarType: _vString; Editable: TRUE),
// _EXIF_RelatedSoundFile=31;
(Description: s_FocalPlaneXResolution; VarType: _vDouble; Editable: FALSE),
// _EXIF_FocalPlaneXResolution=32;
(Description: s_FocalPlaneYResolution; VarType: _vDouble; Editable: FALSE),
// _EXIF_FocalPlaneYResolution=33;
(Description: s_ExposureIndex; VarType: _vDouble; Editable: TRUE), // _EXIF_ExposureIndex=34;
(Description: s_SensingMethod; VarType: _vInteger; Editable: FALSE), // _EXIF_SensingMethod=35;
(Description: s_FileSource; VarType: _vInteger; Editable: FALSE), // _EXIF_FileSource=36;
(Description: s_SceneType; VarType: _vInteger; Editable: FALSE), // _EXIF_SceneType=37;
(Description: s_YCbCrPositioning; VarType: _vInteger; Editable: FALSE),
// _EXIF_YCbCrPositioning=38;
(Description: s_ExposureMode; VarType: _vInteger; Editable: FALSE),
// _EXIF_ExposureMode = 39;
(Description: s_WhiteBalance; VarType: _vInteger; Editable: FALSE),
// _EXIF_WhiteBalance = 40;
(Description: s_DigitalZoomRatio; VarType: _vDouble; Editable: Maybe),
// _EXIF_DigitalZoomRatio = 41;
(Description: s_FocalLengthIn35mmFilm; VarType: _vInteger; Editable: Maybe),
// _EXIF_FocalLengthIn35mmFilm = 42;
(Description: s_SceneCaptureType; VarType: _vInteger; Editable: FALSE),
// _EXIF_SceneCaptureType = 43;
(Description: s_GainControl; VarType: _vInteger; Editable: FALSE),
// _EXIF_GainControl = 44;
(Description: s_Contrast; VarType: _vInteger; Editable: FALSE),
// _EXIF_Contrast = 45;
(Description: s_Saturation; VarType: _vInteger; Editable: FALSE),
// _EXIF_Saturation = 46;
(Description: s_Sharpness; VarType: _vInteger; Editable: FALSE),
// _EXIF_Sharpness = 47;
(Description: s_SubjectDistanceRange; VarType: _vInteger; Editable: FALSE),
// _EXIF_SubjectDistanceRange = 48;
(Description: s_GPSLatitude; VarType: _vDouble; Editable: FALSE),
// _EXIF_GPSLatitudeDegrees = 49;
(Description: s_GPSLongitude; VarType: _vDouble; Editable: FALSE),
// _EXIF_GPSLongitudeDegrees = 50;
(Description: s_GPSAltitude; VarType: _vDouble; Editable: FALSE), // _EXIF_GPSAltitude
(Description: s_GPSImageDirection; VarType: _vDouble; Editable: FALSE),
// _EXIF_GPSImageDirection
(Description: s_GPSTrack; VarType: _vDouble; Editable: FALSE), // _EXIF_GPSTrack
(Description: s_GPSSpeed; VarType: _vDouble; Editable: FALSE), // _EXIF_GPSSpeed
(Description: s_GPSDateAndTime; VarType: _vDouble; Editable: FALSE), // _EXIF_GPSDateAndTime
(Description: s_GPSSatellites; VarType: _vString; Editable: TRUE), // _EXIF_GPSSatellites
(Description: s_GPSVersionID; VarType: _vString; Editable: TRUE), // _EXIF_GPSVersionID
(Description: s_Artist; VarType: _vString; Editable: True), // _EXIF_Artist
(Description: s_XPTitle; VarType: _vString; Editable: TRUE), // _EXIF_XPTitle
(Description: s_XPComment; VarType: _vString; Editable: TRUE), // _EXIF_XPComment
(Description: s_XPAuthor; VarType: _vString; Editable: TRUE), // _EXIF_XPAuthor
(Description: s_XPKeywords; VarType: _vString; Editable: TRUE), // _EXIF_XPKeywords
(Description: s_XPSubject; VarType: _vString; Editable: TRUE), // _EXIF_XPSubject
(Description: s_XPRating; VarType: _vInteger; Editable: TRUE) // _EXIF_XPRating
);
procedure TForm1.OpenClick(Sender: TObject);
var
i: Integer;
svalue: string;
begin
if OpenPictureDialog1.Execute then
if FileExists(OpenPictureDialog1.FileName) then
begin
ImageEnIO1.LoadFromFile(OpenPictureDialog1.FileName);
Memo1.Clear;
if ImageEnIO1.Params.EXIF_HasEXIFData = false then
begin
Memo1.Lines.add('No EXIF Data');
exit;
end;
for i := low(EXIF) to high(EXIF) do
begin
sValue := GetEXIFField(ImageEnIO1, i);
if sValue <> '' then
Memo1.Lines.Add(EXIF[i].Description + ': ' + sValue);
end;
end;
end;
end.
William Miller
Adirondack Software & Graphics
Email: w2m@frontiernet.net
EBook: http://www.imageen.com/ebook/
Apprehend: http://www.frontiernet.net/~w2m/index.html