在调整图像大小时保留 exif 数据
Posted
技术标签:
【中文标题】在调整图像大小时保留 exif 数据【英文标题】:preserve exif data while resizing images 【发布时间】:2013-07-01 06:01:37 【问题描述】:我正在开发一个允许用户上传图片的移动应用程序。我使用 django 后端处理这些图像。
我想在服务器中保存调整大小的图像。
我使用PIL
创建图像的缩略图,但图像的所有 exif 数据都丢失了。我想在调整大小的图像中保留 exif 数据。
我正在尝试使用gexiv2
库来复制原图的exif数据并保存到调整大小的图片中:
exif = GExiv2.Metadata(file_path)
为了保留 exif 数据,我将调整大小的图像保存到磁盘,gexiv2
使用此文件路径:
# exif of orginal image
exif = GExiv2.Metadata(file_path)
# exif of resized image
newExif = GExiv2.Metadata('img/512_c')
# save all exif data of orinal image to resized
for tag in exif.get_exif_tags():
newExif[tag] = exif[tag]
# edit exif data - size
newExif['Exif.Photo.PixelXDimension'] = str(im.size[0])
newExif['Exif.Photo.PixelYDimension'] = str(im.size[1]).
但我的问题是,django 将客户端上传的图片作为文件路径提供给我 或作为缓冲区。
当我得到文件路径后,使用gexiv2
获取原始图像的exif数据没有问题。
当我得到一个图像缓冲区时,我无法直接使用gexiv2
获取exif数据,因为gexiv2
需要文件路径参数来获取exif,所以我想暂时将图像缓冲区保存到磁盘。
将图像缓冲区保存到磁盘的最佳方法是什么?
【问题讨论】:
【参考方案1】:我终于找到了解决方案, https://***.com/a/11813684/658976 这确认所有上传到服务器的图像都有文件路径(没有缓冲图像)。
【讨论】:
以上是关于在调整图像大小时保留 exif 数据的主要内容,如果未能解决你的问题,请参考以下文章