Imagemagick
如何在命令行上為圖像添加不可見水印?
這裡有類似的問題,但針對Tex -document。Imagemagick在這裡展示了加水印的方法,但沒有展示如何盡可能地不可見。我目前只是將一些功能元素混淆到照片中,非常難以刪除,而不會扭曲圖像本身。是否有一些命令行工具可以為圖像添加不可見的水印,比如用顯微鏡檢查但仍然可讀?我有一個巨大的圖像樹(種類非常不同,所以水印應該採用 env 等)——一些命令行工具可以在每張照片上快速無形地添加水印?
我相信您正在尋找的是steganography,一種將消息隱藏在其他看似無辜的內容中的方法。
在 Linux 上似乎沒有大量的工具可以解決這個問題,但outguess 1和steghide 2可以滿足您的需求。openstego是另一個(帶有命令行界面)。
例如
outguess
,我將您的問題文本複制/粘貼到Q.txt
:$ ../src/outguess/outguess -k 'Unix&Linux' -d Q.txt Tux.jpg Tux_steg.jpg Reading Tux.jpg.... JPEG compression quality set to 75 Extracting usable bits: 10126 bits Correctable message size: 5008 bits, 49.46% Encoded 'Q.txt': 4592 bits, 574 bytes Finding best embedding... 0: 2274(49.2%)[49.5%], bias 2008(0.88), saved: 2, total: 22.46% 3: 2269(49.1%)[49.4%], bias 2007(0.88), saved: 3, total: 22.41% 13: 2268(49.0%)[49.4%], bias 1977(0.87), saved: 3, total: 22.40% 62: 2237(48.4%)[48.7%], bias 1992(0.89), saved: 7, total: 22.09% 78: 2216(47.9%)[48.3%], bias 1964(0.89), saved: 10, total: 21.88% 78, 4180: Embedding data: 4592 in 10126 Bits embedded: 4624, changed: 2216(47.9%)[48.3%], bias: 1964, tot: 10119, skip: 5495 Foiling statistics: corrections: 1437, failed: 746, offset: 198.494881 +- 300.529142 Total bits changed: 4180 (change 2216 + bias 1964) Storing bitmap into data... Writing Tux_steg.jpg.... $ ../src/outguess/outguess -k 'Unix&Linux' -r Tux_steg.jpg out.txt Reading Tux_steg.jpg.... Extracting usable bits: 10126 bits Steg retrieve: seed: 78, len: 574 $ diff out.txt Q.txt $ echo $? 0
源圖像(來自Tux.svg):
圖片中隱藏了您的問題:
如果您仔細觀察,圖像會有所不同,但幾乎就像第二張是使用更高的 JPEG 壓縮級別生成的一樣。您的問題的完整文本混合在一起(並受密碼保護)這一事實在視覺上根本不明顯。
隱藏的資訊越小,圖像的視覺差異就越小。(我無法在視覺上區分原始文件和嵌入“Copyright YOU 2012”的文件。)
1舊,但建構得很好。
2不使用現代 C++ 編譯器建構,需要一些源修復。