diff --git a/imageio/pngdec.c b/imageio/pngdec.c index 8dc3c6c7..049acd7c 100644 --- a/imageio/pngdec.c +++ b/imageio/pngdec.c @@ -161,6 +161,20 @@ static int ExtractMetadataFromPNG(png_structp png, png_textp text = NULL; const png_uint_32 num = png_get_text(png, info, &text, NULL); png_uint_32 i; + +#ifdef PNG_eXIf_SUPPORTED + // Look for an 'eXIf' tag. Preference is given to this tag as it's newer + // than the TextualData tags. + { + png_bytep exif; + png_uint_32 len; + + if (png_get_eXIf_1(png, info, &len, &exif) == PNG_INFO_eXIf) { + if (!MetadataCopy((const char*)exif, len, &metadata->exif)) return 0; + } + } +#endif // PNG_eXIf_SUPPORTED + // Look for EXIF / XMP metadata. for (i = 0; i < num; ++i, ++text) { int j;