我正在编写一个照片组织应用程序,它使用QListWidget显示照片文件的文件名和缩略图。我使用QListWidget的QItem的QIcon属性来显示图像的缩略图。用户可以编辑EXIF数据和照片的文件名,然后将数据保存到图像文件中。jpg可能还没有添加缩略图,所以我的应用程序允许用户将新生成的缩略图嵌入到jpg文件中。在
我想检索QIcon图像并将其保存在原始照片文件元数据的EXIF部分。为此,我需要将QIcon图像转换为jpeg字节。我已经阅读了QIcon文档,但找不到从QIcon对象获取jpeg byles的方法。在
我使用python3和piexif将EXIF数据写入文件。在填充QListWidget时,我使用PILLOW创建jpeg缩略图。我可以在保存时使用枕头创建缩略图,但是由于缩略图已经存在于QIcon中,所以使用QIcon图像会更有效。在
以下是到目前为止我代码的精髓。显然,它不是一个对象,因为它不能工作。fileName
是一个变量,它包含指向图像文件的完整有效路径。lstPhotos
是一个QListWidget。在
如果有任何建议,我将不胜感激!在
for i in lstPhotos:
exif_dict["thumbnail"] = i.icon()
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, fileName)
感谢@ekhurvo的帮助!以下代码有效:
^{pr2}$然后在同一个班的一个例行程序中:
for i in lstPhotos.items():
thisThumbnail = exif_dict.pop("thumbnail")
if thisThumbnail is None:
thisThumbnail = self.ConvertIconToJpeg(i.icon())
exif_dict["thumbnail"] = thisThumbnail
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, fileName)`
您需要从图标(可以有多个)中获取pixmap,然后用所需格式将其保存到缓冲区中:
函数的用法如下:
^{pr2}$您可以从您的
QIcon
获得QPixmap
,然后可以将QPixmap
保存为JPEG。也许有更好的方法,但这是我现在能想到的。希望这有帮助!在相关问题 更多 >
编程相关推荐