What is Exif Data? (officially , according to JEIDA/JEITA/CIPA specifications) is a standard that specifies the for , , and ancillary tags used by (including ), and other systems handling image and sound files recorded by digital cameras. The specification uses the following existing file formats with the addition of specific tags: (DCT) for compressed image files, Rev. 6.0 (RGB or YCbCr) for uncompressed image files, and for audio files (Linear or ITU-T μ-Law PCM for uncompressed audio data, and - for compressed audio data). It is not used in or . Exchangeable image file format Exif formats images sound digital cameras smartphones scanners metadata JPEG discrete cosine transform [2] TIFF RIFF WAV PCM G.711 IMA ADPCM [3] JPEG 2000 GIF How to pull Exif data In order to access this data, you’ll need to interpret the image itself. To automate this Exif extraction, you can easily use to work through each image with a small command-line utility called . Linx Exiftool Steps to recreate First, download and install the Windows Executable from . Exiftool.org Extract Exiftool and rename the exe file to “exiftool.exe” Start a new solution in (free) Linx Designer Add a Setting for the full path to the “exiftool.exe” file: Creating the PulllExifData Function 1. Add a new Function to your solution called PullExifData (this will be the re-usable function to extract Exif data into an easily accessable List of Name and values.) 2. Create a new Type called “NameAndValue” with 2 string properties called “Name” and “Value”: 3. Back, on your PullExifData Function, add a String Parameter field for this function for “ImageFullPath” 4. Add a Result field for the PullExifData function called “ListOfEXIFData” which is a (A list of the Type we created a couple of points above.) List < NameAndValue > 5. The full flow of the PullExifData function will look like this: 6. FullCMD is a String, with a value of the Command that needs to be executed: =$.Settings.ExifToolPath + " " + $.Parameters.ImageFullPath 7. CommandLine runs the String above and provides an Output as text. 8. ListOfLines takes the String from the CommandLine and splits it into each line as a String, by cutting off each line at the NewLine point ($.System.NewLine): =CommandLine.Output.Split($.System.NewLine) 9. ListOfNamesAndValue is just an empty list, of the Type we created earlier called “NameAndValue” 10. In the “ForEach” we will loop through the ListOfLines 11. For each Line of the ListOfLines, we first Split the value again into a small String List called NameAndValueInList. Each Line contains a “Name : Value” pair, separated by a colon (:). =ForEach.Loop.Split(":") 12. Because some lines from the ListOfLines may be empty or not contain a “Name : Value” pair, we do a “ValueExists” if-else check. The condition we are checking for basically check if the Split(":") was successful in creating 2 values (and as such a “:” was present and a Name and Value was extracted. 13. Now we can finally add the extracted Name and Value to the ListOfNamesAndValues list with AddToList: 14. At the end of the function, SetValueResult saves our populated list as the Result of the Function: This gives us everything we need to extract Exif data from a photo, and we can use this function in any other Function to get specific data. For example, if I want to extract Exif Data called “User Comment” and save it to a Database: Voila! You're done. Some example data from a photo: Want the Solution? Download the completed solution for Linx 5.20 here: (8.7 KB) EXIFExtractor.lsoz