在python有:'from PIL import ImageTK, Image',但我也想有'from exif import Image',但他们不能共存

In python have: 'from PIL import ImageTK, Image', but I also want to have 'from exif import Image', but they can't coexist

我正在尝试创建一个选择 jpg 文件的项目,在小框架中显示图像并在下面的标签中列出所需的 exif 值。我必须使用 PIL Image 来写入文件并获取 'an image' (我真的不知道变量内容是什么)我十次调整该文件的大小,然后将其变成 Tinter Label 可以显示的东西 label = pilpic

from PIL import ImageTk, Image
....
self.img1=Image.open(self.imagefile)
self.img2=self.img1.resize((300,300), Image.Resampling.NEAREST)
self.pilpic=ImageTk.PhotoImage(self.img2)

这完全符合预期,直到我介绍 exif 模块。

from exif import Image
.....

指令相同: self.exifdata=Image.open(self.imagefile)

但是当然图像已经被拍摄了,虽然这个命令有效,self.exifdata 文件在其他 exif 命令中没有用,例如:

if self.exifdata.has_exif: 

完全失败,因为我怀疑 Image.open 来自 OPIL,并且变量 self.exifdata 的内容与 exif 命令不兼容

现在取决于我首先列出的模块运动功能,它以各种其他方式失败,完全与使用错误的一个或另一个代码位一致 Image.open

我会使用其他一些 module/s 打开文件以在 tinter 标签中显示或提取 exif 数据。

在这个阶段 pillow/PIL 是我唯一能做显示部分的,并且能够调整图像大小以适应 frame/lable。

我会使用 'exif' 以外的其他模块来提取 exif 数据,但 'exif' 是我发现的唯一一个 a) 易于使用 b) 简单易行的模块来自和 c 的字符串数据)...无需重新编码宇宙和理解奇怪的数学即可提供 GPS 数据。

所以,谁能告诉我如何导入这两个 Image 函数并让它们快乐地生活在一起?

您可以使用别名导入它:

from exif import Image as exImage

然后您可以在您的代码中使用名称为 exImage 的它。它不会干扰来自 PIL.

Image

顺便说一句,PIL.Image._getexif() 方法,它可以做你想做的事而不需要 exif

img._getexif()