lideshan 发表于 2021-2-24 15:50

关于标注图片但是用起来出现问题的解决方法

# 关于标注图片但是用起来出现问题的解决方法
## 原因
有一批图片在windows里边看起来是正的,但是用python加载读取可视化的时候会旋转,实际上是图片的exif信息导致的
## 解决办法
这里有两个解决方法
1.import os
from PIL import Image, ExifTags

def rutn_around(infile, outfile):
    img = Image.open(infile)
    try:
      for orientation in ExifTags.TAGS.keys():
            if ExifTags.TAGS == 'Orientation': break
      exif = dict(img._getexif().items())
      if exif == 3:
            img = img.rotate(180, expand=True)
            with open("file_to_scale.txt","a",encoding="utf-8")as f:
                f.write(infile+"\n")
      elif exif == 6:
            img = img.rotate(270, expand=True)
            with open("file_to_scale.txt","a",encoding="utf-8")as f:
                f.write(infile+"\n")
      elif exif == 8:
            img = img.rotate(90, expand=True)
            with open("file_to_scale.txt","a",encoding="utf-8")as f:
                f.write(infile+"\n")
    except:
      pass
    img.save(outfile, quality=100)
根据图片的exif信息通过使用pillow库进行旋转
2.强制干掉图片的exif信息,然后人工检查修改import osimport shutil

from PIL import Image

_dir = r""
_save = r""
# _save=_dir.replace(os.path.basename(_dir),"")
for i in os.listdir(_dir):
    tmp = os.path.join(_dir, i)
    img = Image.open(tmp)
    x,y=img.size
    img = img.rotate(0, expand=True)
    img.save(os.path.join(_save, i))
两种方法的比较
第一种虽然快,但是可能会有个别的有问题,很难被发现出来,第二种方法虽然慢,但是准确
img = img.rotate(0, expand=True)
这个0,表示的是度数,倒立的改成180,向左的90,向右的-90

fangjia9999 发表于 2021-2-24 16:15

这个一定要支持
页: [1]
查看完整版本: 关于标注图片但是用起来出现问题的解决方法