lazarus-ccr/components/fpexif
wp_xxyyzz 48246179fa fpexif: Include translation files.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8675 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2023-01-13 00:18:35 +00:00
..
delphi examples fpexif: Adapt to better work in Delphi. 2020-11-29 13:58:23 +00:00
examples fpexif: Fix IPTC crashing when reading a zero byte fillers at the end of IPTC segment (https://forum.lazarus.freepascal.org/index.php/topic,61832.msg466607.html#msg466607). 2023-01-12 23:34:10 +00:00
languages fpexif: Include translation files. 2023-01-13 00:18:35 +00:00
tests fpexif: Fix compilation of unit tests with Delphi. 2021-07-13 07:40:43 +00:00
tools
fpeexifdata.pas fpexif: Fix IPTC crashing when reading a zero byte fillers at the end of IPTC segment (https://forum.lazarus.freepascal.org/index.php/topic,61832.msg466607.html#msg466607). 2023-01-12 23:34:10 +00:00
fpeexifreadwrite.pas fpexif: Fix IPTC crashing when reading a zero byte fillers at the end of IPTC segment (https://forum.lazarus.freepascal.org/index.php/topic,61832.msg466607.html#msg466607). 2023-01-12 23:34:10 +00:00
fpeglobal.pas fpexif: Add support of XMP meta data (reading). 2022-03-07 12:10:52 +00:00
fpeiptcdata.pas fpexif: Less hints and warnings. 2021-10-27 14:54:14 +00:00
fpeiptcreadwrite.pas fpexif: Fix IPTC crashing when reading a zero byte fillers at the end of IPTC segment (https://forum.lazarus.freepascal.org/index.php/topic,61832.msg466607.html#msg466607). 2023-01-12 23:34:10 +00:00
fpemakernote.pas fpexif: Separate Canon and Casio MakerNote units. Complete Casio MakerNote tags. 2019-01-27 00:04:02 +00:00
fpemakernotecanon.pas fpexif: Less hints and warnings. 2021-10-27 14:54:14 +00:00
fpemakernotecasio.pas fpexif: Prepare for compilation with Delphi. Fix crash with Nikon images. 2020-02-17 18:52:45 +00:00
fpemakernoteepson.pas fpexif: Prepare for compilation with Delphi. Fix crash with Nikon images. 2020-02-17 18:52:45 +00:00
fpemakernotefuji.pas fpexif: Prepare for compilation with Delphi. Fix crash with Nikon images. 2020-02-17 18:52:45 +00:00
fpemakernoteminolta.pas fpexif: Less hints and warnings. 2021-10-27 14:54:14 +00:00
fpemakernotenikon.pas fpexif: Less hints and warnings. 2021-10-27 14:54:14 +00:00
fpemakernoteolympus.pas fpexif: Include translation files. 2023-01-13 00:18:35 +00:00
fpemakernotesanyo.pas fpexif: Include translation files. 2023-01-13 00:18:35 +00:00
fpemetadata.pas fpexif: Minor optimization. 2022-12-08 17:58:19 +00:00
fpestrconsts.pas fpexif: Fix IPTC crashing when reading a zero byte fillers at the end of IPTC segment (https://forum.lazarus.freepascal.org/index.php/topic,61832.msg466607.html#msg466607). 2023-01-12 23:34:10 +00:00
fpetags.pas fpexif: Less hints and warnings. 2021-10-27 14:54:14 +00:00
fpeutils.pas fpexif: Fix some range check errors. Patch by forum user Mirkasp (https://forum.lazarus.freepascal.org/index.php/topic,60105.msg448827). 2022-07-28 20:48:21 +00:00
fpexif_fpc.inc fpexif: Prepare for compilation with Delphi. Fix crash with Nikon images. 2020-02-17 18:52:45 +00:00
fpexif_pkg.lpk fpexif: Support write-back of XMP 2022-03-07 21:03:56 +00:00
fpexif_pkg.pas fpexif: Support write-back of XMP 2022-03-07 21:03:56 +00:00
fpexif.inc
fpexmpdata.pas fpexif: XMPData.TagFromIndex now returns only the "value" part of the tag. 2022-03-09 10:56:50 +00:00
fpexmpreadwrite.pas fpexif: Add missing unit fpeXmpReadWrite 2022-03-08 08:08:08 +00:00
readme.txt

================================================================================
fpexif 
================================================================================

--------------------------------------------------------------------------------
Overview
--------------------------------------------------------------------------------
fpexif is an fpc/Lazarus library for displaying and manipulating meta data in
image files. 

fpexif works without the LCL. 

Meta data systems supported are
- EXIF (including thumbnail, GPS, and manufacturer notes (partially) )
- IPTC

Image formats 
- JPEG
- TIFF

The majority of meta data tags can be modified and written back to file. It 
should be emphasized, however, that the EXIF maker notes are poorly documented
and often become unreadable after editing an EXIF structure.

Some examples in which fpexif can be applied:
- add user comments, keywords and other documentation
- fix date/time information (incorrect time/zone at camera when travelling 
  in foreign countries)
- adding GPS information to scanned photographs
- remember exposure settings of difficult photos
- extract thumbnails for a super-fast thumbnail viewer


--------------------------------------------------------------------------------
Quick introduction
--------------------------------------------------------------------------------

The basic class is TImgInfo (in unit fpeMetaData). It has properties to read
meta data from file/stream (LoadFromFile, LoadFromStream) and to write them
back (SaveToFile).

EXIF data found in the file are stored by the object ExifData from which every
tag can be acessed as TagByID[ATagID: TTagID] or TagByName[AName: String].  
(TTagID is a DWord value containing the numerical ID of a tag in the low-word, 
and the ID of the "directory" to which the tag belongs in the highword.)

The properties TagByID and TagByName return a TTag instance in which the tag 
value is stored. The type of the value depends on the type of the tag and can 
be accessed by calling AsString, AsInteger, Asfloat, AsIntegerArray, 
AsFloatArray etc. TTag is declared in unit fpeTags.


--------------------------------------------------------------------------------
Example
--------------------------------------------------------------------------------
Read meta data from a file, write a particular tag, modify a tag, write back.
See also "console_demo".

  uses
    fpeMetadata, fpeTags;
    
  var
    imgInfo: TImgInfo;
    tag: TTag;
  begin
    imgInfo := TImgInfo.Create;
    try
      // Read file
      imgInfo.LoadFromFile('MyImage.jpg');
      
      // Check for EXIF meta data
      if imgInfo.HasEXIF then begin
      
        // Read the shutter speed used when taking an image from EXIF data
        WriteLn(
          'ShutterSpeed: ',
	  imgInfo.ExifData.TagByName['ShutterSpeed'].AsString
        );
	
	// or better (to avoid the exception if this particular tag does not exist):
	tag := imgInfo.ExifData.TagByName['ShutterSpeed'];
	if tag <> nil then WriteLn('ShutterSpeed: ', tag.AsString);
      
        // Add a user comment to the EXIF data
        imgInfo.ExifData.TagByName['UserComment'].AsString := 'My best photo';
      
        // Save the modified meta data to file
        imgInfo.SaveToFile('MyImage_edited.jpg');
	// or: imgInfo.Save;  // overwrite currently loaded file
    
      end;
    finally
      imgInfo.Free;
    end;
  end;
  

--------------------------------------------------------------------------------
Tested systems
--------------------------------------------------------------------------------
* Lazarus 1.0/fpc 2.6.0 up to Lazarus 1.9/fpc 3.0.4
* Delphi 7.0
* Delphi XE2
* Delphi 10.2 Tokyo


--------------------------------------------------------------------------------
License
--------------------------------------------------------------------------------
Modified LGPL (like Lazarus)