Imagemagick

如何在命令行上為圖像添加不可見水印?

  • July 31, 2014

這裡有類似的問題,但針對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):

純JPG,無水印

圖片中隱藏了您的問題:

包含隱藏資訊的文件

如果您仔細觀察,圖像會有所不同,但幾乎就像第二張是使用更高的 JPEG 壓縮級別生成的一樣。您的問題的完整文本混合在一起(並受密碼保護)這一事實在視覺上根本不明顯。

隱藏的資訊越小,圖像的視覺差異就越小。(我無法在視覺上區分原始文件和嵌入“Copyright YOU 2012”的文件。)

1舊,但建構得很好。

2不使用現代 C++ 編譯器建構,需要一些源修復。

引用自:https://unix.stackexchange.com/questions/31066