# 关于标注图片但是用起来出现问题的解决方法
## 原因
有一批图片在windows里边看起来是正的,但是用python加载读取可视化的时候会旋转,实际上是图片的exif信息导致的
## 解决办法
这里有两个解决方法
1.[Python] 纯文本查看 复制代码 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] == 'Orientation': break
exif = dict(img._getexif().items())
if exif[orientation] == 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[orientation] == 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[orientation] == 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信息,然后人工检查修改[Python] 纯文本查看 复制代码 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))
两种方法的比较
第一种虽然快,但是可能会有个别的有问题,很难被发现出来,第二种方法虽然慢,但是准确
[Python] 纯文本查看 复制代码 img = img.rotate(0, expand=True)
这个0,表示的是度数,倒立的改成180,向左的90,向右的-90 |