Image.open()读取图片分辨率长宽交换??

1-问题描述:

用图片软件打开查看一个文件夹下的所有图片时:分辨率均为1240*1680

但是用python的PIL打开查看时,有些图像分辨率变成了1680*1240

2-原因:

一些图像编辑软件或库在处理图像时,可能会根据图像的方向进行不同旋转显示。

需要通过旋转图像以匹配方向:有时候,图像的 EXIF 数据可能会影响其显示方向。在处理图像时,可以使用 EXIF 数据来正确调整图像的方向

from PIL import Image, ExifTags

def correct_image_orientation(image_path):
    img = Image.open(image_path)
    
    try:
        exif = img._getexif()
        if exif is not None:
            for orientation in ExifTags.TAGS.keys():
                if ExifTags.TAGS[orientation] == 'Orientation':
                    break
            
            exif_orientation = exif.get(orientation, 1)
            if exif_orientation == 3:
                img = img.rotate(180, expand=True)
            elif exif_orientation == 6:
                img = img.rotate(270, expand=True)
            elif exif_orientation == 8:
                img = img.rotate(90, expand=True)
    except (AttributeError, KeyError, IndexError):
        # 没有 EXIF 数据或其他错误
        pass
    
    return img

# 示例路径
image_path = 'path_to_your_image.jpg'

# 纠正方向后的图像
corrected_img = correct_image_orientation(image_path)
corrected_img.show()

# 打印纠正后图像的分辨率
print(f'Corrected image size: {corrected_img.size}')

这样可以保证读取进来的图片和用图片软件打开查看的分辨率一致。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜比斯特威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值