我最近将相机的 SD 卡放入 Windows 7 PC 中并开始浏览其中的照片。我注意到有些照片没有正确对齐,因此我使用rotate feature
Windows 照片查看器中的内置功能来查看照片。
我不知道的是使用旋转功能时,按下一个或上一个按钮也会覆盖图片导致可能的质量损失(我认为这是个坏主意,应用程序至少应该警告用户使用此类功能时会发生什么)。
之后,我重新将 SD 卡插入相机,但意外发生了:旋转的图片无法预览。相反,我看到一个黑屏,显示“不兼容的 JPEG 格式”。其他文件(未动)仍可正常工作。
为了尝试了解发生了什么,我在十六进制编辑器中打开了相机中的 JPEG 文件和在 Windows 7 上生成的 JPEG 文件。区别如下:
相机 JPEG 文件Exif
内有一个标签(在0xE1
标题内)。其他 JPEG 文件(Windows 7)JFIF
内首先有一个标签,然后是一个Exif
标签(0xE0
在标题内)。
所以如果我理解得好的话,两者都是 JPEG 文件,但使用不同的内部格式。
这是我的问题:是否可以(使用某些工具)将JFIF
文件转换为Exif
格式?
我知道原始相机文件已被重新编码,因此会损失一些质量(无法恢复原始文件)。我想知道是否可以将它们从 JFIF 转换回 Exif(如果可能的话,不会造成第二次质量损失...)
答案1
JPEG 标准有许多出于特定原因而创建的文件兼容性变体,其中经常使用的两种类型是 EXIF 和 JFIF。
尽管这两种文件都属于 JPEG 文件,并且在计算机上以 JPEG 扩展名显示,但其区别在于在相机或计算机处理原始图像时添加了补充数据。这些数据通常存储在称为“APPn”的区域中(其中“n”是数字 0、1、2 等)。
大多数图像处理软件都可以打开这两种类型的 JPEG 文件,但大多数数码相机只能显示 EXIF 格式的图像。当在 Photoshop 等图像处理程序中打开 EXIF 文件并保存时,文件会变为 JFIF 格式,导致相机无法再打开该图像,拍摄数据也会丢失。
EXIF
EXIF 格式是为数码相机创建的,APPn 存储诸如记录图像时相机的状态(快门、光圈白平衡等)等信息。
日语FIF
JFIF 变体通常用于成像行业,大多数软件应用程序都以这种格式保存文件。JFIF 使用 APPn 来存储信息,例如版权和标题(IPTC 文本)以及用于色彩管理的配置文件信息(icm 数据)。
你可以试试Exif工具并运行此命令,但您的相机可能无法显示图像,因为拍摄数据丢失。
exiftool "-exif:all<jfif:all" "-thumbnailimage<jfif:thumbnailimage" FILE
答案2
摘自维基百科文章的兼容性部分JPEG 文件交换格式:
较新的可交换图像文件格式 (Exif) 与 JFIF 相当,但这两个标准互不兼容。这是因为这两个标准都规定其特定应用程序段(JFIF 为 APP0,Exif 为 APP1)必须是图像文件中的第一个。实际上,许多程序和数码相机都会生成包含这两个应用程序段的文件。这不会影响大多数解码器的图像解码,但设计不佳的 JFIF 或 Exif 解析器可能无法正确识别文件。
基于上述内容,您只需使用十六进制编辑器删除 APP0 段/标记并添加 APP1 段/标记(例如,使用其他处理 Exif 数据的工具)即可将 JFIF 转换为 Exif。或者,您只需添加 Exif 数据,您仍然应该能够在大多数程序中打开图像。