jpeg - 将大量自定义数据添加到 jpg 图像文件中

标签 jpeg exif file-format

我想知道是否有一种明显而优雅的方法可以将附加数据添加到 jpeg,同时保持标准图像查看器的可读性。更准确地说,我想将(扫描的)照片背面的图片嵌入其中。老照片的背面往往写着个人信息,可能是日期或一些笔记。当然你可以使用 EXIF 并添加一些文本,但背面的实际图像更可取。
当然我也可以保存 2 个文件 xyz.jpg 和 xyz_back.jpg,或者将两个图像并排排列,总是在一张图片中可见,但这不是我想要的。
这是可能的并且已经完成,就像在三星 Note 2 和 3 上一样,您可以将手写笔记添加到您作为图像拍摄的照片中。或者一些智能手机允许将录音嵌入到图像文件中,同时保留这些文件在其他设备上的可读性。

最佳答案

一个有趣的问题。有些文件格式支持每个文件的多个图像(想到多页 TIFF),但 JPEG 本身不支持这种格式。

JPEG 文件格式的一项功能是应用程序段的概念。这些是 JPEG 文件的区域,可以包含任意信息(作为字节序列)。 Exif 实际上存储在这些段之一中,并由前导码标识。

看看这个页面:http://www.sno.phy.queensu.ca/~phil/exiftool/#JPEG

您会在那里看到许多以 APP 开头的段。如 APP0 (可以存储 JFIF 数据),APP1 (可以包含 Exif)等等。

没有什么可以阻止您将数据存储在这些段之一中。符合标准的 JPEG 阅读器将忽略这些无法识别的数据,但您可以编写软件来存储/检索其中的数据。甚至可以在这样的段中嵌入另一个 JPEG 文件!然而,我不知道这样做的先例。

另一种选择是将第二张图片作为第一张图片的缩略图。通常缩略图非常小,但您可以将第二张图像存储为第一张的缩略图。不过,某些软件可能会替换或删除它。

一般来说,我认为使用两个文件和一个命名约定是最简单和最不容易混淆的,但您确实有选择。

关于jpeg - 将大量自定义数据添加到 jpg 图像文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33609044/

相关文章:

java - 使用 DCT 的隐写术

ruby-on-rails - 如何上传多页 PDF 并使用 Paperclip 将其转换为 JPEG?

android - 位图压缩 PNG -> JPEG,在 Android 中反之亦然

python - 在 Python 中调整图像大小而不会丢失 EXIF 数据

json - 一个包含很多JSON的文件,这个文件的定义是什么?

java - 如何在 Java 中获取字节并从中生成图像文件?

php - 在 php 中按 exif 数据对图像进行排序

java - 如何在Android中使用函数 "getAttribute"从带有exif的图像中提取字节数组?

java - JKS key 存储格式规范

hadoop - cdh5.1.2是否支持Parquet文件格式