diff --git a/bob/io/image/__init__.py b/bob/io/image/__init__.py index 5416a3296e6331c4333f6091b45ff277d5658d49..b46400a6666a15590f8fad9e956afe62e5883723 100644 --- a/bob/io/image/__init__.py +++ b/bob/io/image/__init__.py @@ -17,6 +17,12 @@ def get_config(): import bob.extension return bob.extension.get_config(__name__, version.externals) +# fix imghdr's jpeg detection to use the first two bytes (according to https://en.wikipedia.org/wiki/List_of_file_signatures) +import imghdr +def _test_jpeg(h, f): + if h.startswith('\xff\xd8'): + return "jpeg" +imghdr.tests.append(_test_jpeg) def load(filename, extension=None): """load(filename) -> image @@ -48,8 +54,10 @@ def load(filename, extension=None): f = bob.io.base.File(filename, 'r') else: if extension == 'auto': - import imghdr - extension = "." + imghdr.what(filename) + extension = imghdr.what(filename) + if extension is None: + raise IOError("Could not detect the image type of file %s" % filename) + extension = "." + extension f = bob.io.base.File(filename, 'r', extension) return f.read()