我正在使用允许用户上传图片的移动应用程序。我使用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,所以我想保存图像缓冲区临时到磁盘。
将图像缓冲区保存到磁盘的最佳方法是什么?
答案 0 :(得分:0)
最后我得到了解决方案, https://stackoverflow.com/a/11813684/658976 这确认上传到服务器的所有图像都有文件路径(没有缓冲图像)。