我正在通过脚本创建Scribus中的页面来放置文本和图像。 我希望使用pyexviv2来读/写Exif XPKeywords。通过使用'human_value'从返回的字节值进行转换,可以很好地读取。我意识到我不需要转换,除非看到它有效。 我正在从一个标签中拆分获得的字符串,并希望将一个部分写入另一个标签。 我知道我不能反向使用'human_value'(只读)。 有人能指出我正确的方向吗?下面,进展到目前为止,获取文件名的第5部分,工作正常。
[编辑]添加...元数据['Exif.Image.XPKeywords'] =要写的部分[4]给出了ValueError:无效的值。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import scribus #will test that Scribus is running
import pyexiv2
import string
metadata = pyexiv2.ImageMetadata('j:/BOOK/Banns/1.jpg')
metadata.read()
metadata.exif_keys
['Exif.Image.ImageDescription',
'Exif.Image.DocumentName',
'Exif.Image.XPComment',
'Exif.Image.XPAuthor',
'Exif.Image.XPSubject',
'Exif.Image.XPKeywords',
'Exif.Image.DateTime',
'Exif.Image.Artist',
'Exif.Image.Copyright',
'Exif.Image.ExifTag']
tag=metadata['Exif.Image.DocumentName']
txt=tag.human_value
scribus.messageBox("", txt) #instead of raw_value or just value
parts=txt.split(',',5) #Split filename at ',' i.e. 5 strings in a List
scribus.messageBox("",parts[4]) #Separate Place from List
答案 0 :(得分:1)
经过4个小时的研究,我通过反复试验找到了一个可能对其他人有用的工作答案。
我在问题中添加了...... “metadata ['Exif.Image.XPKeywords'] = parts [4]”写入给出ValueError:无效值 答案如下,因为XPKeywords是utf-16 ......
metadata['Exif.Image.XPKeywords']=pyexiv2.utils.string_to_undefined(parts[4].encode('utf-16'))
metadata.write()