在调整图像大小时保留 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 数据的主要内容,如果未能解决你的问题,请参考以下文章

在不丢失 Exif 数据的情况下调整图像大小?

imagemagick:调整大小后如何获取图像大小?

使用 php Imagick 保留背景调整 PNG 的大小

如何从 Android 相机图像中去除 EXIF 数据

如何使用“包含”选项调整图像的大小,但保留原始尺寸的纵横比?

如何调整图像分割蒙版的大小?