在C#中為圖片添加數(shù)字水印的幾種辦法
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
最近在寫個人項目時,有遇到需要將圖片加上水印防止被盜取的需求。這里找了幾種實現(xiàn)方式,可供有需要的朋友參考。 本身我不是搞算法這塊的,所以這里只是找了一些實現(xiàn),也沒有繼續(xù)深究下去。 以前在學校的時候從書上了解過可以將一些信息嵌入到圖片中的技術(shù),這次順便也在網(wǎng)上找到了這種實現(xiàn)方式。
方式一,直接使用GDI+繪制水印到圖片上 這種方式的話存在幾個問題 1、水印很容易被清除,用ps的內(nèi)容識別一下就干掉了 2、水印的文字大小不好控制(理論是可以根據(jù)圖片的大小動態(tài)計算字符的大小的,以前見過這種實現(xiàn),但這里我也沒去仔細找實現(xiàn)了,就大概寫了個根據(jù)圖片大小調(diào)整字符大小的邏輯。) 實現(xiàn)邏輯如下:
繪制出來大概效果如下:
方式二、將圖片信息嵌入到圖片中 這是我在github上找到一種實現(xiàn)方式,項目地址:https://github.com/mchall/HiddenWatermark 項目描述: 使用盲DWT-DCT方法在圖像中嵌入隱藏水印。與隱寫方法不同,這種隱藏水印能夠抵抗各種形式的攻擊。僅限于黑白32x32水印圖像。 項目里有示例,可以根據(jù)示例進行調(diào)用。 使用這種方法,可以將一個32x32的黑白圖像嵌入到圖片中。 經(jīng)過我實際 測試,發(fā)現(xiàn)如果圖片太小,是不支持這種嵌入方式 的。個人推斷應(yīng)該是如果圖片太小,還未達到寫入32x32圖片的空間大小。具體最小支持到什么尺寸的圖片,我也沒有仔細去計算了。 效果如下: 我這里弄了一張寫了zti三個字的灰度圖,然后嵌入到圖片中去。
嵌入 后,圖片看起來跟原始圖像沒有區(qū)別,但是能再次把嵌入的圖片提取出來
方式三、將文字信息嵌入到圖片中 這是我在CodeProject上找到的一種實現(xiàn)方式??梢栽谙旅娴逆溄又邢螺d到實現(xiàn)的源碼和示例程序,直接參考集成即可。 項目地址:https://www.codeproject.com/Tips/635715/Steganography-Simple-Implementation-in-Csharp 使用這種方式,可以將文字嵌入到圖片中,然后再次提取出來。 注意:注意:不要以有損格式(如 JPEG)保存結(jié)果圖像;推薦是保存為PNG。 效果如下: 我這里嵌入了HelloWorld到圖片中,可以再次從圖片中提取出來 閱讀原文:原文鏈接 該文章在 2025/7/21 10:43:31 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |