Closed JonathanRoth13 closed 1 year ago
pip install "exifread<3"
solved this for me.
I'm on macOS (Apple silicon).
Works fine on macos, but fails on raspberrypi
I just came across the same issue. No idea what 'hdlr' contains. In the exiv2 source it parses it with a function called parseHandler
(in quicktimevideo.cpp
). Just skipping it seems to work, though:
diff --git a/exifread/heic.py b/exifread/heic.py
index 1109d15..e61f833 100644
--- a/exifread/heic.py
+++ b/exifread/heic.py
@@ -158,6 +158,11 @@ def parse_meta (self, meta):
# skip any unparsed data
self.skip (box)
+ def parse_hdlr (self, box):
+ self.get_full (box)
+ # can I just ignore it?
+ self.skip (box)
+
def parse_infe (self, box):
self.get_full (box)
if box.version >= 2:
imho just ignoring it would be the right thing to do, i've created a PR #175
fwiw, the following monkey patch also seems to work for me..
def _monkey_patch_exifread():
from exifread import HEICExifFinder
from exifread.heic import NoParser
_old_get_parser = HEICExifFinder.get_parser
def _get_parser(self, box):
try:
return _old_get_parser(self, box)
except NoParser:
logger.warning("ignoring parser %s", box.name)
return None
HEICExifFinder.get_parser = _get_parser
_monkey_patch_exifread()
Seems like this is not yet fully fixed? https://github.com/ianare/exif-py/issues/184
This is still an issue. I'm trying to parse an image that was made on an iPhone, but the Python code and the image are on Win11 WSL.
It's the error during the process_file
call:
File ".../lib/python3.8/site-packages/exifread/heic.py", line 173, in get_parser
raise NoParser(box.name) from err
exifread.heic.NoParser: hdlr
i encountered this error using python 3.9.2 and while trying to extract exif data from a HEIC file.![2022-01-18_screenshot_bumbling : bash](https://user-images.githubusercontent.com/60151487/150015738-c6ca3f0c-d5ca-4391-ab60-55652c1c7667.png)
exifread