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