在调整图像大小时保留exif数据

时间:2013-07-01 06:01:37

标签: python django python-imaging-library exif

我正在使用允许用户上传图片的移动应用程序。我使用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 个答案:

答案 0 :(得分:0)

最后我得到了解决方案, https://stackoverflow.com/a/11813684/658976 这确认上传到服务器的所有图像都有文件路径(没有缓冲图像)。