2013-04-24 86 views
0

我寫了自己的代碼實現隱寫術項目來隱藏圖像中的文本。代碼完美工作。用C#保存Jpeg圖像改變像素

但是,當我再次將圖像保存爲JPEG文件開放,數據丟失,我得到一個垃圾結果文本(好像不正確保存到新的圖像像素)

enter image description here

但是,當我將圖像保存爲BMP格式,然後我可以得到隱藏的文字完美,彷彿像素被正確地保存到輸出圖像:

enter image description here

那麼問題出在哪裏?

+8

JPEG壓縮是有損算法。所以你不能使用Jpeg作爲'Steganography' – I4V 2013-04-24 21:36:47

+1

bmp是一種非常古老的文件格式,並且壓縮比較小(如果有的話),你可能希望保存爲.png,雖然 – Sayse 2013-04-24 21:38:22

+0

@ I4V我可以保存爲不壓縮的Jpeg嗎? – 2013-04-24 21:38:59

回答

2

你需要使用無損jpeg,有幾個庫可以做到這一點(Pegasus,LeadTools) 如果你不能使用它們中的任何一個,那麼你需要使用PNG。 .Net中的Jpeg壓縮是有損的,所以像素不會相同。

+0

這正是我所期待的,因爲PNG尺寸相對較大。 – 2013-04-24 22:01:04

+1

albattran,你知道使用無損選項時的大小嗎?它是否真的小於png? – I4V 2013-04-24 22:15:22

+0

@ I4V所以我們只會贏得延期。 – 2013-04-24 22:22:38

0

如果你想使用有損壓縮方法(如JPEG)的隱寫術,那麼你現有的算法顯然不健壯。

要查看如何可以在這種情況下使用隱寫一個例子,看看the open source F5-steganography project