我正在制作一个 Java 程序,我希望能够向图像文件添加额外的信息(只是纯文本,以后可以由同一个程序读取)。我正在考虑将其添加为第一行。
有没有办法在不破坏图像文件的情况下添加这样的信息。我能否以某种方式“评论”该文本,使其不会作为图像二进制文件的一部分被读取(例如,当您在记事本中打开图像时,它会显示在那里)。
这被标记为 Java,但通常,您可以修改图像文件的EXIF 数据。
另见: http: //frickelblog.wordpress.com/2009/08/21/java-library-for-reading-writing-exif-xmp-and-iptc-in-jpegs/
大多数图像文件格式允许任意元数据。PNG 图像在“块”中包含像素数据、颜色配置文件、版权等等 - 有关说明,请参见http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html。您可能想要一个 iTXt 或 tEXT 块。
JPEG 还允许元数据。阅读 JFIF 和 EXIF。看到这个答案:https ://stackoverflow.com/a/10699613/10468
有关Java 特定的答案,请参阅用 Java 编写图像元数据,最好是 PNG问题。
Find JPEG resolution with PHP中可能也有对您有用的信息,尽管该问题询问的是 PHP 而不是 Java。
如今,TIFF 的出现并不多,但该格式允许为您想要存储的任何数据提供各种额外数据和用户定义的标签。
据我所知,没有图像文件格式可以在文本编辑器中打开或在命令行打印,这将显示为文本元数据,而不是像素乱码。但是,可以定义这样的文件格式 - 如果文件以文本开始,具有 EOT (ascii 03) (iirc),然后以二进制形式继续,大多数文本命令行工具和可能的文本编辑器将很好地处理文本并停在 EOT。我不确定这是否适用于所有平台。
您可以使用 Image Stagenography 隐藏文本。以下是一些可以帮助您执行此操作的链接:Images' Steganography
对的,这是可能的。我解释一下算法:
这是主要部分:
您甚至可以在图像中保存另一个图像或语音信号。我知道这篇文章被标记为 Java,但为了让您了解一下,您可以在文件“stagenography_embed_text_in_image.py”中查看我在this_github_link中实现相同内容的 python 代码。我还解释了在此stackoverflow_post中保存其他类型信息的算法。
希望它说清楚。