2012-03-18 57 views
-1

我想打水印像這個網站:http://9gag.com水印圖片下(9gag.com風格)

,其主要的事情是把一個帶下的圖像,而不是將其放置在圖片。我想用GD庫編譯器使用PHP。任何幫助將不勝感激最好的一個將是一個示例代碼或準備使用一個:)

問候!

回答

8

創建的形象是x像素越高,原始圖像複製到它在(0,0)位置,然後在水印位置(0,original_height)

$image = 'foo.jpg'; 
$watermark = 'watermark.png'; 
$imagesize = getimagesize($image); 
$watermarksize = getimagesize($watermark); 
$img = imagecreatetruecolor($imagesize[0], $imagesize[1] + $watermarksize[1]); 
imagecopy($img, imagecreatefromjpeg($image), 0, 0, 0, 0, $imagesize[0], $imagesize[1]); 
imagecopy($img, imagecreatefrompng($watermark), 0, $imagesize[1], 0, 0, $watermarksize[0], $watermarksize[1]); 
imagejpeg($img); 

沒有測試,但它應該工作那樣。該代碼假定水印不比原始圖像寬。

+0

不處理可變圖像寬度。 – 2012-03-18 13:43:16

+0

好吧,我檢查後,我可以說,它的工作可變圖像寬度,直到水印寬度比圖像小,這很好! @ThiefMaster你能告訴我如何改變這個條紋的背景顏色以及如何在右下角做水印嗎? (現在它在左下角)。首先,非常感謝! – Snatch 2012-03-18 16:15:17

+0

'imagecolorallocate()'創建一個顏色,'imagefilledrectangle()'繪製一個方框(使用與第二個'imagecopy()'調用相同的尺寸並在調用該函數之前放置代碼)。您也可以在複製任何內容之前簡單地「填充()」整個圖像。 – ThiefMaster 2012-03-18 17:50:24

1

如果你想讓它看起來不那麼容易。

底部條紋需要3個區塊,即底部條紋的左側,中間和右側。建議所有3個塊都有相同的高度。

Here you go

使用

imagecreatetruecolor(imagesx($original_picture), imagesy($original_picture)+$stripe_height); 

然後:

  • 左邊爲imagecopymerge(...)
  • 右側爲imagecopymerge(...),但你需要減去的寬度來計算X目的地右輸入圖像的寬度爲
  • 左右之間(再次,做數學,它的容易)使用imagecopyresize(...)添加中間塊。使用該功能來確保它在左側和右側的塊之間線性縮放。
+0

Grigore你是漫畫家嗎?簡單的繪製,但它有一些東西:D和btw。我看到你知道你在說什麼,也許你可以準備一些更適合我使用的代碼? – Snatch 2012-03-18 14:24:07

+1

哈哈,它只是Snipping Tool的默認鑿子,我有一臺IBM X61T。此外,沒有時間寫整個事情,但很容易做到。如果你不能這樣做,只需去Elance,並支付印度15美元爲你做。 – 2012-03-18 14:28:39