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()