2012-01-16 96 views
2

我已經搜索了一個解決方案的年齡,但我無法真正找到適合我需求的解決方案。將水印添加到圖像

這就是故事。我創建一個網站,我真的想添加水印到下載的圖像。

昨天我在一個名爲9gag的網站上瀏覽。如果你以前沒有聽說過這個網站,那麼它是一個基於漫畫的網站,我發現當你下載一張圖片,或者從除了他們的網站以外的任何地方訪問圖片時,在圖片底部有一個「水印/橫幅」圖片。

例如,拍攝這張圖片: link,請注意圖片底部沒有橫幅。

如果您右鍵單擊「複製圖片網址」,您會看到以下鏈接:image。現在看橫幅?

我很困惑他們是怎麼做的,如果我們可以在我們的網站上使用它,這將是非常好的。

任何有任何想法的人?它使用任何類型的CGI嗎?

P.S:我不確定要添加什麼標籤,所以如果有人知道更好的標籤組合,請進行編輯。

+0

我不知道你的例子,但你可以做到這一點(水印添加)使用PHP GD庫,很容易圖像。看看這裏http://php.net/manual/en/ref.image.php – 2012-01-16 18:46:36

回答

4

這種效果只是一個CSS技巧。圖像本身實際上在底部包含水印,但圖像標籤被封裝在一個塊中,該塊在頁面中顯示時隱藏(溢出:隱藏)圖像的底部42個像素。

還有其他事情可以做,這是更復雜(例如,必須通過一個PHP腳本的圖像服務和對比HTTP引用

header("content-type: image/jpeg"); 
if (!isset($_SERVER['HTTP_REFERER'])){die("alert('Restricted Access!');");}; 
$_u=parse_url($_SERVER['HTTP_REFERER']); 
$_u=preg_replace("/(www.)/i","",strtolower($_u['host'])); 
$_i=$_SERVER['HTTP_HOST']; 
$_i=preg_replace("/(www.)/i","",strtolower($_i)); 
if ($_u != $_i){ 
    //handle this with gd or redirect 
} 

),但是這個如果有人試圖加載只會工作來自不同網站的圖像,或者如果他們轉到圖像url ...通常會保存 - 這樣可以將圖像從瀏覽器的緩存中保存下來,因此css技巧可能是您擁有的最佳選項(或這些選項的組合)。基本上請記住,您在網絡上顯示的任何內容都可以被捕獲(上面的代碼並非萬無一失,您可以隨時通過prtsc)。

+0

非常感謝你爲快速響應本D,我從來沒有想過,他們會做的CSS技巧。 另外我會嘗試你給我的PHP代碼,非常感謝你。 – 2012-01-16 19:16:50

+0

還要記住 - 假設您的水印是爲了防止版權侵犯 - 以使用css技巧爲例,使用水印切掉該圖像的底部是一件微不足道的事情,包括(因爲它是可預測的大小)通過腳本或服務器端軟件這樣做的能力,可以將這些圖像提供給另一個頁面。您可能會看到使用不可見水印的水印,或幾乎如此。目前我似乎無法找到合適的人,但在過去的幾天裏看到了一個。 – MattJenko 2012-02-10 22:04:43

1

GD庫的PHP將幫助你做到這一點。

  1. 你需要創建一個使用imagecreate功能,但增加了一些更多的「空間」,以原始大小的新形象。例如:如果我有200×200(你可以檢索使用GD功能太)的圖像,你需要使用該函數來創建一個200x220px圖像

  2. 使用imagefilledrectangle功能

  3. 填入新圖像與灰色
  4. 複印原始圖像劃分成使用imagecopy

  5. 設置標頭的內容類型的圖像的新的/ 類型 PNG GIF等。

  6. 輸出到第e圖像使用imagepng或任何其他具有所需格式的功能。

+0

雖然這並不是我正在尋找的東西,但這對未來將會非常有幫助。謝謝! – 2012-01-16 19:17:25

+0

@MichaelSchinis對,對不起,我已經理解了你想要的東西。 xD – WoLfulus 2012-01-16 20:23:52

+0

+代表一個很好的答覆雖然:) – 2012-01-16 22:29:26

0

我已經使用jQuery水印成功: Jquery Watermark

+0

謝謝你的貢獻,但我認爲本D有最好的解決方案。 這個jQuery插件總是添加水印,我真的不希望這一點,我只希望它被保存時顯示。 – 2012-01-16 19:14:46