Python:使用Pillow将EXIF数据写入文件时出错

时间:2016-11-16 18:44:19

标签: python exif pillow

我正在尝试使用Pillow和Python 3将EXIF数据写入jpg文件。我不明白为什么以下代码失败。任何帮助将不胜感激。

fileName是jpg文件的有效完整路径和文件名。我从QListWidget访问该名称,该名称将照片文件名称及其图像显示为图标。总体思路是遍历QListWidget中的文件列表并更新每个文件的EXIF数据。

    while S < self.lstPhotos.count():
        fileName = str(self.lblPath.text() + "/" + self.lstPhotos.item(S).text())
        im = Image.open(fileName)
        exifdata = im._getexif()
        exifdata[0x010f] = "Canon"
        exifdata[0x0110] = "EOS 630"
        im.save(fileName, exif=exifdata)
        S += 1

我收到的错误是:

Traceback (most recent call last):
  File "/home/richard/Dropbox/Documents/Personal/Python/PhotOrg/src/photoOrgMain.py", line 372, in WriteEXIFData
im.save(fileName, exif=exifdata)
File "/home/richard/.local/lib/python2.7/site-packages/PIL/Image.py", line 1698, in save
save_handler(self, fp, filename)
File "/home/richard/.local/lib/python2.7/site-packages/PIL/JpegImagePlugin.py", line 725, in _save
ImageFile._save(im, fp, [("jpeg", (0, 0)+im.size, 0, rawmode)], bufsize)
File "/home/richard/.local/lib/python2.7/site-packages/PIL/ImageFile.py", line 490, in _save
e = Image._getencoder(im.mode, e, a, im.encoderconfig)
File "/home/richard/.local/lib/python2.7/site-packages/PIL/Image.py", line 439, in _getencoder
return encoder(mode, *args + extra)
TypeError: argument 13 must be string or read-only buffer, not dict

我猜测Pillow不想要字典形式的EXIF数据,但这是Pillow从文件中检索的格式。

我无法在线查找有关EXIF数据应采用何种格式的文档。我认为它应与Pillow使用_getexif()调用生成的格式相同。

我正在使用Python 3.我使用的是最新版本的Pillow。 Pillow安装在.local / lib / python2.7 / site-packages / PIL /上,其他功能似乎在Python 3下工作。

0 个答案:

没有答案