将GPSIFD指针添加到没有GPSIFD指针的EXIF标头

将GPSIFD指针添加到没有GPSIFD指针的EXIF标头,gps,jpeg,exif,Gps,Jpeg,Exif,我有特殊的问题。我想使用一个预定义的EXIF和添加GPS字段大量的JPEG图片 问题是这些图片没有Gps IFD。EXIF通常在映像数据(SOI)之前,因此对EXIF的任何修改都会导致磁盘中映像的完全重写。我不想修改千兆字节的图片,以便添加GPS字段 第一个问题:我的选择是什么 第二个问题:我可以用gpsinfoifdfdopper覆盖IFD0中的无用标记到SOI之后的偏移量,然后我只需要附加GPSIF和数据,这是FAT支持的操作吗?这会破坏大多数解析器吗?只要生成的Exif数据仍然适合APP1

我有特殊的问题。我想使用一个预定义的EXIF和添加GPS字段大量的JPEG图片

问题是这些图片没有Gps IFD。EXIF通常在映像数据(SOI)之前,因此对EXIF的任何修改都会导致磁盘中映像的完全重写。我不想修改千兆字节的图片,以便添加GPS字段

第一个问题:我的选择是什么


第二个问题:我可以用
gpsinfoifdfdopper
覆盖IFD0中的无用标记到SOI之后的偏移量,然后我只需要附加GPSIF和数据,这是FAT支持的操作吗?这会破坏大多数解析器吗?

只要生成的Exif数据仍然适合APP1 JPEG段,并且仍然是有效的Exif,您就可以实现所需的功能。但是,如果您有来自不同来源的图像,您可能会发现您无法始终使修改后的数据符合要求,因为可能没有足够的标记可以删除,以便为整个新IFD创建所需的空间

不幸的是,您不能在APP1段内创建指向APP1段外部的指针。一些读者可能会处理这个问题,但这将是非常不规则的,可能会导致问题。然而,这不是我见过的东西

如果可以从现有IFD中删除一些标记,那么您可能有足够的空间在创建的净空中写入GPS IFD

您还可以在APP1段中留下一些死区。也就是说,您不必使新的Exif数据完全适合空间,它只是不能比以前的数据大


一些JPEG用户可能允许您将APP1段移动到图像段之后(您可以在不重新写入/移动任何内容的情况下从文件末尾扩展文件),但我没有尝试过这样做,因此无法对它的工作方式发表评论。

Hello Drew。听起来我是这么想的。您给我的关键信息是,新的exif不需要填充已删除标记留下的完整空间。我现在的方法是取出拇指,如果可能的话,调整它的大小。我会让你知道结果的。祝你好运。这是一个有趣的问题,我很想听听你进展如何。你好,德鲁。我做到了。这是添加了GPS标记的文件:以及原始照片。该方法使用libexif从原始文件加载exif,删除缩略图,添加GPS数据并搜索到文件中的“exif”字符串位置。用新的exif重写文件,并设置剩余空间。我可以调整缩略图的大小,但我的目标是嵌入式系统。APP1结束后的写作练习仍然保留。谢谢输出看起来不错。但不确定是否需要在APP1之后编写任何内容,也不确定是否需要在memset之后编写任何内容。TIFF读取器将忽略标记或IFD指针未指向的任何字节。