

Windows virus scanners that wedge reads on these files until they've been determined to be safe make this approach even more costly. On Windows, a distribution of Perl and the ~1000 files that make up ExifTool are extracted into a temporary directory for every invocation. Starting the perl version of ExifTool is expensive, and is especially expensive on the Windows version of ExifTool.

This package is so much faster due to ExifTool child process reuse, as well as delegation to > 1 child processes. Parsing took 85654ms (28.4ms / file) # ubuntu, core i3 With the npm run mktags target, > 3000 sample images, and maxProcs set to 4, reading tags on my laptop takes ~6 ms per image: extractBinaryTag ( "tagname", "path/to/file.exf", "path/to/dest.bin" ) Performance extractJpgFromRaw ( "path/to/image.cr2", "path/to/fromRaw.jpg" ) // Extract the binary value from "tagname" tag in `path/to/image.jpg` // and write it to `dest.bin` (which cannot exist already // and whose parent directory must already exist): exiftool. extractPreview ( "path/to/image.jpg", "path/to/preview.jpg" ) // Extract the "JpgFromRaw" image (found in some RAW images): exiftool. extractThumbnail ( "path/to/image.jpg", "path/to/thumbnail.jpg" ) // Extract the "Preview" image (found in some images): exiftool. Import ) // Extract the low-resolution thumbnail in `path/to/image.jpg`, // write it to `path/to/thumbnail.jpg`, and return a Promise // that is fulfilled when the image is extracted: exiftool.
