3

我正在使用 Django-media-tree 将图像导入站点图像库。我在 PIL 中遇到了一个错误,其中图像上的一些未知 EXIF 数据导致生成缩略图时出现未处理的异常。我不想在 PIL 中四处乱窜,而是希望在 PIL 处理图像之前简单地从图像中删除所有 EXIF 数据。

使用 chilkat.CkXmp() 我试图以干净的形式将图像重写到新目录,但是 RemoveAllEmbedded() 方法返回 None,并且图像被完整地重写为 EXIF 数据。

import os
import sys
import chilkat

ALLOWED_EXTENSIONS = ['.jpg', 'jpeg', '.png', '.gif', 'tiff']

def listdir_fullpath(d):
    list = []
    for f in os.listdir(d):
        if len(f) > 3:
            if f[-4:] in ALLOWED_EXTENSIONS:
                list.append(os.path.join(d, f))
    return list

def trim_xmp_data(file, dir):
    xmp = chilkat.CkXmp()
    success = xmp.UnlockComponent("Anything for 30-day trial.")
    if (success != True):
        print xmp.lastErrorText()
        sys.exit()

    success = xmp.LoadAppFile(file)
    if (success != True):
        print xmp.lastErrorText()
        sys.exit()
    print "Num embedded XMP docs: %d" % xmp.get_NumEmbedded()

    xmp.RemoveAllEmbedded()

    #  Save the JPG.
    fn = "%s/amended/%s" % (dir, file.rsplit('/')[-1])
    success = xmp.SaveAppFile(fn)
    if (success != True):
        print xmp.lastErrorText()
        sys.exit()


for item in listdir_fullpath('/Users/harrin2/Desktop/tmp/'):
    trim_xmp_data(item, '/Users/harrin2/Desktop/tmp')

谁能告诉我哪里出错了,或者是否有更好的方法来清理图像,我愿意接受建议.....

TIA

4

0 回答 0