ageitgey / image_to_numpy

Load an image file into a numpy array with Exif orientation support. Prevents upside-down and sideways images!
MIT License
180 stars 36 forks source link

Jpeg from Fujifilm #1

Open dmitrykopytine opened 4 years ago

dmitrykopytine commented 4 years ago

I'm not a Python developer. So my Python may be just misconfigured. But I read a translation of your article https://habr.com/ru/post/471112/ and decided to check a jpeg from Fujifilm X-T1. These jpegs were a reason for some bugs in my PHP code. And yes, it does not work in your code (normal jpeg from Photoshop works).

File: https://dm9.ru/tmp/1.jpg

img = image_to_numpy.load_image_file("D:\\Tmp\\1.jpg") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Program Files\Python36\lib\site-packages\image_to_numpy\src.py", line 84, in load_image_file img = PIL.ImageOps.exif_transpose(img) File "C:\Program Files\Python36\lib\site-packages\PIL\ImageOps.py", line 549, in exif_transpose transposed_image.info["exif"] = exif.tobytes() File "C:\Program Files\Python36\lib\site-packages\PIL\Image.py", line 3213, in tobytes return b"Exif\x00\x00" + head + ifd.tobytes(offset) File "C:\Program Files\Python36\lib\site-packages\PIL\TiffImagePlugin.py", line 822, in tobytes data = self._write_dispatch[typ](self, *values) TypeError: write_undefined() takes 2 positional arguments but 5 were given

oceanlvr commented 4 years ago
File "/home/oyx/anaconda3/envs/detectron/lib/python3.6/site-packages/PIL/TiffImagePlugin.py", line 822, in tobytes
    data = self._write_dispatch[typ](self, *values)
TypeError: write_undefined() takes 2 positional arguments but 5 were given

I get the same error.

stefanocoding commented 4 years ago

It seems to be related to this issue https://github.com/python-pillow/Pillow/issues/4346

var-nan commented 3 years ago

You can use the image_to_numpy.exif_transpose(img) function directly. Here's how to do it

  1. Create an image from the file
  2. pass the image to the exif_transpose() function
img = PIL.Image(file)
array = image_to_numpy.exif_transpose(img)