swipebox icon indicating copy to clipboard operation
swipebox copied to clipboard

Some photos get rotated!

Open ghost opened this issue 7 years ago • 3 comments

There's something odd with how exif data is processed: some photos are vertical but swipebox displays them rotated, for example this photo: https://drive.google.com/file/d/0B8T6sxTm3685RWg3Wnota0xGX2s/view?usp=sharing

I'm using the following piece of code (python) to display the thumbnail with the correct rotation, and it rotates properly the image, I've never had any issue with it. Maybe can you get the inspiration from this snippet.

Thank you.

def Fix_image_rotation(image):
  orientation_to_rotation_map = {
    3: Image.ROTATE_180,
    6: Image.ROTATE_270,
    8: Image.ROTATE_90,
  }
  try:
    exif = _get_exif_from_image(image)
    orientation = _get_orientation_from_exif(exif)
    rotation = orientation_to_rotation_map.get(orientation)
    if rotation:
      image = image.transpose(rotation)
  except Exception as e:
    pass
    # Would like to catch specific exceptions, but PIL library is poorly documented on Exceptions thrown
    # Log error here
  finally:
    return image

def _get_exif_from_image(image):
 exif = {}
 if hasattr(image, '_getexif'):  # only jpegs have _getexif
   exif_or_none = image._getexif()
   if exif_or_none is not None:
     exif = exif_or_none
 return exif

def _get_orientation_from_exif(exif):
 ORIENTATION_TAG = 'Orientation'
 orientation_iterator = (
   exif.get(tag_key) for tag_key, tag_value in ExifTags.TAGS.items()
   if tag_value == ORIENTATION_TAG
 )
 orientation = next(orientation_iterator, None)
 return orientation

ghost avatar Jul 27 '17 22:07 ghost

It's been around 50 days, has anyone looked at this issue?

ghost avatar Sep 14 '17 14:09 ghost

Do you have a specific need for rotation to happen in javascript? Wouldn't it be more efficient to just rotate on upload?

shawnCaza avatar Jan 31 '18 20:01 shawnCaza

The point is that photoswipe rotates pictures, but incorrectly.

ghost avatar Apr 03 '18 08:04 ghost