UrlFetcher
in Node.js can now handle redirects.- added missing
multiSegment
in .d.ts file.
- Issue #67 -> improved IPTC parsing performance.
- Sidecar support through
exifr.sidecar()
. - Support for url query strings and headers in Node.js polyfill of UrlFetcher.
UrlFetcher
now works in Node.js too. i.e. You can usestring
URL asfile
argument in Node.js (previously only available in browser). Exifr now implements polyfill forwindow.fetch()
. But it's only available infull
bundle.
- Issue #59 regarding
mwg-rs:Regions
. - Problems with parsing absolute paths in Electron, NW.JS and other Node/browser hybrid environments. (Node's
fs
now takes precedence over brower'sfetch
when parsing absolute path argument)
- Slight changes to XMP parsing logic. Only affects obscure cases with lists and nested
rdf:Description
. Won't affect most of the basic use cases.
- AVIF SUPPORT
- EXIF segment (and thus GPS) extraction from PNG files. Only parses the modern
eXIf
chunks and notzTXt
- IIQ file support
Invalid input argument for BufferView
bug when parsing XMP from TIFF file if the XMP IFD0 tag was of type string (2) instead of byte array (1)Closing file descriptor N on garbage collection
when reading unknown format.
- Encoding in IPTC (issue 47)
- d.ts: typo; additional type for
exifr.rotation()
exifr.rotation()
works correctly on latest macos safari.
- PNG SUPPORT (and IHDR segment parser which implements the PNG header structure)
- IHDR dictionary
- JFIF dictionary - the keys are now in configurable dictionary instead of hardcoded into a parser.
- Orientation bug related to ios and webview (PR 42)
- Reading APP13 Segment not containing IPTC
- Unwrapping value of ExifImageHeight ExifImageWidth in case it is in typed array
- Chunked reading of heic file, related to Issue 35
- Nothing new. Re-release of 5.0.4 which was accidentally released with code from 5.0.3.
- Issue 35 - reading heic file if mdat box preceded meta.
- autorotation detection in firefox 77
- Bug: Reading photo in chunked mode where segment header is split between chunks.
- Bug: ICC Text fields (of type 'text') are no longer missing last few characters.
- Bug: IPTC out of range error.
- Initial work on reducing the library's filesize
- Slightly improved IPTC performance.
- Updated
exifr.rotation()
with Chrome 81' new autorotation behavior. Applies to all Chromium browsers (like the new Edge).
"main"
field in package.json now points to./dist/full.umd.js
instead of./dist/full.umd.cjs
.
- package.json no longer includes
"type": "module"
for now. Tools don't support it yet and"main"
field was already pointing to UMD (CJS). Source codes were using.mjs
extension for a while so nothing should break, but it's a major release just in case.
exifr.rotation()
orientation()
in mini bundle (possibly more mini-bundle related bugs)- bug: Critical dependency: require function related to bundling UMD with webpack
- d.ts types
- IE10 DataView related bug
.cjs
copy of alllegacy
builds in dist/.
Quality-Of-Life release. Improves compatibility and ease of use with various tools and environments.
- all ESM bundles are now available in two identical copies with different file extensions.
.mjs
and.js
for ESM,.cjs
and.js
for UMD. Just pick one that works with your tooling or environment. - Backtracking on using only
"type":"module"
in package.json as the only way to define the module as ESM. - package.json's
"main"
points to UMD bundlefull.esm.mjs
instead of UMDfull.umd.js
. - Added default export which wraps all named exports into single object.
- Simplified and improved implementation of
thumbnail()
andthumbnailUrl()
. - Improved typescript types. Added
HTMLImageElement
toinput
.
- Support for IE10
- No need to use these polyfills anymore:
TextDecoder
,Object.assign
,Object.keys
,Object.values
,Object.fromEntries
,Array.from
,Array.prototype.includes
,fetch
,Map
,Set
. Promise
polyfill is needed now instead ofregeneratorRuntime
- XMP XML Parser
- XMP Extended support. To extract all XMP segments, set
options.multiSegment
oroptions.xmp.multiSegment
to true.
output.xmp
is no longer where the XMP segment data are stored. XMP tags are parsed, grouped by namespace and each namespace is assigned directly tooutput
object, likeoutput.xmlns
,output.GPano
,output.crs
and more. This can be disabled by settingoptions.xmp.parse: false
window.BigInt
bug in webworker
- Fixed types in d.ts (
String
->string
,Number
->number
).
- renamed
ExifParser
class toExifr
. - renamed
thumbnailBuffer()
function tothumbnail()
. It now also returnsUint8Array
instead ofArrayBuffer
in browser. Node.js version keeps returningBuffer
.
- Renamed
options.image
block tooptions.ifd0
. - Renamed
options.thumbnail
block tooptions.ifd1
. - renamed & simplified behavior of
seekChunkSize
andparseChunkSize
. SeefirstChunkSize
,firstChunkSizeBrowser
,firstChunkSizeNode
. - Changed EXIF & IPTC tag dictionary to match ExifTool. Most tag names remain the same. Some might be changed slightly. You can check out the
src/dicts/*
files for reference. For example: before{ExposureBiasValue: 0}
, after{ExposureCompensation: 0}
; before{WhiteBalance: 'Auto white balance'}
, after{WhiteBalance: 'Auto'}
- Renamed
output.image
block tooutput.ifd0
. - Renamed
output.thumbnail
block tooutput.ifd1
. - removed
postProcess
property and split its behavior to new propertiessanitize
,translateKeys
,translateValues
andreviveValues
. - Changed behavior of
options.wholeFile
and renamed tooptions.chunked
- The library now comes in multiple bundles, with varying number of parsers & tag dictonaries.
lite
bundle is now recommend as the default for browser use because of its small footprint. - Broken down parsers and tag dictionaries into multiple files. No all of them are included in
lite
ormini
builds. package.json
defined module as"type": "module"
. All.js
files are treated as ES Modules by Node.js.
- ICC Parser
- Older browsers support
- multiple new output builds (so users can prevent importing unused code)
- tags filtering (
pick
/skip
options) exifr.gps()
- major rewrite of a whole input reader pipeline
- implemented
BufferView
wrapper class for all forms of binary data. - reimplemented chunked reader
- implemented
- major rewrite of a whole parser pipeline
- broken the code into separate parser classes & files (TIFF, XMP, IPTC, ICC)
- TIFF is no longer the main parser
- All APP segments are now first searched in the file and then parsed
- implemented base parser class than can be used to implement custom APP-segment parsers by user
- exposed segment parsers
- rewrote readme
2.1.4 - 2019-11-10
- udpated dependencies
- tweaked demo page
2.1.3 - 2019-11-10
- code coverage
2.1.2 - 2019-11-09
- added project logo
- tweaked demo page UI
- moved demo page to custom domain mutiny.cz & changed links to reflect that
2.1.1 - 2019-09-18
- tests for IPTC
- magic comments for webpack
- normalized old tests
2.1.0 - 2019-09-12
- tests for webworker
- webworker bug
- removed dependency on Nodes fs module
- various bugfixes
2.0.0 - 2019-07-05
- default export is not longer
getExif()
function. It's available as named exportparse()
along few new ones.
- thumbnail extraction
- better docs and readme
*.tif
and*.tiff
file support (raw TIFF segments not wrapped in jpg APPn segments)- many bugfixes, typos, stability improvements
1.2.0 - 2019-04-27
- issue #1
1.1.0 - 2018-09-29
- AMD module support
1.0.0 - 2018-08-01
- initial implementation