当前位置: 首页 > 面试题库 >

来自Google Takeout的jpg批量加入json和jpg

岳安福
2023-03-14
问题内容

我想留下Google照片,并且已经使用Google
Takeout下载了所有照片。现在,我有一大堆包含json文件(我认为包含exif数据)和图像的文件夹。结构如下所示:home / user /
Billeder / Takeout / Google Photos / 2011-06-09 / file.json。主页/用户/ Billeder /
Takeout(2)/ Google相册/2011-07-09/file.json。

我想将json数据与正确的图像合并,并在与它们的创建日期相对应的文件夹中组织图像。我一直在看Exiftool,但是到目前为止找到的所有答案仅显示了如何针对单个图像执行此操作。我正在寻找的是一种将所有数据与正确的图像批量合并的方法。

我正在尝试在linux命令行中执行此操作。有没有办法做到这一点?


问题答案:

从版本10.47开始,Exiftool现在可以执行此操作。

在我的测试中,我看到了json文件名的两种不同格式,有的格式filename.ext.json和有的格式(json文件名中filename.json没有扩展名)。这里有两个命令可以解决这两种情况。如果像我一样混合使用,请同时运行。

json文件名中带有扩展名的文件
exiftool -tagsfromfile '%d/%F.json' '-ImageTag<JsonTag' FileOrDir

json文件名中没有扩展名的文件
exiftool -tagsfromfile '%d/%f.json' '-ImageTag<JsonTag' FileOrDir

FileOrDir您要处理的文件或目录替换。替换ImageTag为要复制到的图像中标签的名称。替换JsonTag为您要复制的json文件中标签的名称。如果您使用的是Windows而不是Linux,请使用双引号而不是单引号。

这是我在json文件中遇到的一些更有用的标签,以及将它们复制到哪里的建议。标签名称中的两个(描述和标题)与相关的XMP标签相同,因此无需将其重定向到图像标签名称,可以简单地用上述命令-Description-Title在命令中保留。
description :文件描述。适当的放置位置是IPTC:Caption-
Abstract,XMP:Description和EXIF:ImageDescription。你可以用复制这些'-Caption- Abstract<Description'-Description'-ImageDescription<Description'
title :上传文件的名称。这可以被复制到TitleObjectDescriptionPreservedFileName

:不确定,但是我猜测如果文件中有人在Picasa之类的程序中标记了人,则这将是名称列表,很可能来自RegionPersonDisplayName
url :这是可以从中下载图像的URL。警告:这是一个公共共享的URL,即使该图像被标记为私有,仍可以使用该URL下载。
GeoInfoAltitude_GeoInfoLatitude_GeoInfoLongitude_
:如果上载的文件已进行地理标记,则这些将是图像的高度,纬度和经度。这些将最好复制到GPSAltitudeGPSLatitudeGPSLatitudeRefGPSLongitude,和GPSLongitudeRef。由于GPS标签(无符号),图像是在西方和/或南半球的性质
必须 也设置了Ref标签。

示例命令:
复制gps标签
exiftool -tagsfromfile '%d/%F.json' '-GPSAltitude<GeoInfoAltitude_' '-GPSLatitude<GeoInfoLatitude_' '-GPSLatitudeRef<GeoInfoLatitude_' '-GPSLongitude<GeoInfoLongitude_' '-GPSLongitudeRef<GeoInfoLongitude_' FileOrDir

复制关键字
exiftool -tagsfromfile '%d/%F.json' '-Keywords<Tags' '-Subject<Tags' FileOrDir

复制说明
exiftool -tagsfromfile '%d/%F.json' '-Caption-Abstract<Description' '-ImageDescription<Description' -Description FileOrDir

编辑(2018年1月):谷歌将一如既往地改变一切。上面的 GeoInfo 标签已根据以下注释弃用,并已由 GeoDataAltitude
GeoDataLatitudeGeoDataLongitude取代* 。

Exiftool可以读取Json文件,因此,如果有其他更改,运行命令exiftool -s FILE.Json将列出所有可以复制的标签和可用数据。



 类似资料:
  • 我在Azure Blob存储中有CSV文件,我想将文件内容插入我的MS SQL表。我在代码中使用的CSV文件和表具有相同的列数。 我使用了此处指定的批量插入命令:从Azure blob存储中的文件导入数据。 如果使用本地文件路径,则大容量插入按预期工作,但如果从blob读取,则会出现以下错误: 无法大容量加载,因为无法打开文件“itemdata\u csv\u test.csv”。操作系统错误代码

  • 问题内容: 一个csv文件包含8列(col1,col2,…,col8),文件名也包含必须插入表中的日期。 如果表中的列数与csv文件中的列数相等,则以下查询将所有记录从文件导入到表中: 到目前为止,我还没有找到一种解决方案来修改查询,以便新记录可以包含从文件名中提取的日期。无论如何,我已经创建了一个提取日期的函数: 并想将eventTime插入到从文件导入的每个记录的第9列中。 有谁知道如何修改/

  • 问题内容: 我的问题是关于如何从多个(或分片的)tfrecords获取批处理输入。我已经阅读了示例https://github.com/tensorflow/models/blob/master/inception/inception/image_processing.py#L410。基本的管道,把培训作为集为例,(1)首先产生一系列tfrecords(例如,,,…),从这些文件名(2),生成一个

  • 问题内容: 这是我在阅读有关jpa批量插入的几个主题之后创建的简单示例,我有2个持久对象User和Site。一个用户可以拥有多个站点,因此我们在这里有一对多的关系。假设我要创建用户并将多个站点创建/链接到用户帐户。考虑到我愿意为Site对象使用批量插入,代码如下所示。 但是,当我运行此代码时(我将hibernate方式用作jpa实现提供程序),我看到以下sql输出: 所以,我的意思是“真实的”批量

  • 问题内容: 我正在尝试使用Nest将多个记录插入数据库。使用IndexMany类插入确实可以,但是我还需要通过json字符串插入对象。 我确实在github上进行了查找,并找到了一些如何使用RAWclient的示例。在代码示例下面,我插入json。 一些其他信息: jsondata: var twitter: 我从数据库收到的结果: 有人知道这个问题可能是什么吗?还是我在json /代码中丢失了什

  • 问题内容: 似乎我有一个相似但不相同的查询,因此最好像@Val建议的那样,让其他人从中受益。 因此,类似于上述内容,我需要在索引中插入大量数据(我的初始测试大约是10000个文档,但这只是针对POC,还有更多)。我想插入的数据在.json文档中,看起来像这样(片段): 我自己是ElasticSearch的新手,但是,从阅读文档开始,我的假设是我可以获取.json文件并根据其中的数据创建索引。从那以