2012-01-12 109 views
1

基本上,我有2個PHP腳本。 1個php腳本是顯示的,另外1個是水印功能。在PHP中爲圖像添加水印

我用這個PHP與水印顯示圖像:

<img src="watermark1.php?image=photo.jpg> 

這是我watermark1.php:

<?php 
// this tells the browser to render jpg image 
header('content-type: image/jpeg'); 

// getting the image name from GET variable 
$image = $_GET['image']; 

// creating png image of watermark 
$watermark = imagecreatefrompng('watermark.png'); 

// getting dimensions of watermark image 
$watermark_width = imagesx($watermark); 
$watermark_height = imagesy($watermark); 

// creating jpg from original image 
$image_path = $image; 
$image = imagecreatefromjpeg($image_path); 
//something went wrong 
if ($image === false) { 
    return false; 
} 
// getting the dimensions of original image 
$size = getimagesize($image_path); 
// placing the watermark 5px from bottom and right 
$dest_x = $size[0] - $watermark_width - 5; 
$dest_y = $size[1] - $watermark_height - 5; 
// blending the images together 
imagealphablending($image, true); 
imagealphablending($watermark, true); 
// creating the new image 
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); 
imagejpeg($image); 
// destroying and freeing memory 
imagedestroy($image); 
imagedestroy($watermark); 
?> 

然而,水印圖像無法顯示。我聽說過GDLibrary和ImageMagicK,但我不知道這2個是關於什麼的。有沒有一種方法可以通過添加php代碼來添加水印,還是必須導入GDLibrary/ImageMagicK。

感謝您抽出時間。

回答

0

GDLibrary是一個PHP擴展,它爲PHP添加圖像生成功能,例如imagejpeg或imagecopy等。 爲了生成圖像,您必須確保GD已在您的服務器上安裝並啓用。

更新

Here你可以找到有關安裝GD信息。

+0

您好,感謝您的回覆!我已經下載了GDLibrary!我如何啓用GD,以及如何將這個GD導入到我的項目中? – dada050909 2012-01-12 03:36:33

+0

我更新了。訪問上面的鏈接。 – 2012-01-12 09:53:35

+0

嗨,謝謝,它已經解決了。 :) – dada050909 2012-01-27 06:44:05

0

ImageMagick是一個圖像處理軟件。它比GD更強大,這對於某些事情來說更糟糕(例如ImageMagick完成的圖像縮放比較好)。對於ImageMagick的PHP包裝,請看this鏈接,對於GD,請看this鏈接。此外,如果您決定使用ImageMagick,請確保您符合要求(您在發佈的鏈接中有他們)...... bacisally您需要在服務器上安裝ImageMagick。

+0

嗨!謝謝你的幫助!我將使用GD,因爲我剛剛下載了它! =) – dada050909 2012-01-12 05:31:38

+0

大多數情況下,我發現GraphicsMagick比ImageMagick更好。非常類似於使用,但總的來說,前者對我來說表現更好。值得在箭袋中同時使用箭頭。 – 2012-06-15 22:28:28

0

我用不同的,像我的魅力一樣工作的圖像是由JavaScript操縱。如果你堅持要在服務器(PHP)上進行圖像操作,那麼只需在PHP文件中嵌入JavaScript。

有兩種途徑,但我選擇了jQuery。

直接的JavaScript:http://www.patrick-wied.at/static/watermarkjs/

的Jquery:http://www.patrick-wied.at/static/watermarkjs/jq/

這種方法的訣竅是有代碼的腳本(右)之前通過調用.js文件結束時運行,然後使用$。 ready.document()之後進行水印配置。然後瞧!

0

您可以添加和使用簡單的PHP代碼像這樣與TopiLib工作自定義輸出圖片:(您可以同時添加圖片和文字水印,太)

<?php require '../topi.lib.min'; 
$panel = new \TopiLib\TopiPanel('png transparent', 9, 0, 0, 0); 
$panel->createFromPNG($_GET['image'], true); 
$img = new \TopiLib\TopiImage('watermark.png', 'transparent png'); 
$img->startX = 100; //your custom start X position 
$img->startY = 100; //your custom start Y position 
$panel->addImage($img); 
$panel->render(); ?> 
0

下面是代碼,

<?php 

header('content-type: image/jpeg'); 
$src = $_GET['src']; 
$path = pathinfo($src); 
$watermark = imagecreatefrompng('watermark.png'); 
$watermark_width = imagesx($watermark); 
$watermark_height = imagesy($watermark); 
$image = imagecreatetruecolor($watermark_width, $watermark_height); 
if ($path['extension']=='png') 
$image = imagecreatefrompng($src); 
else if ($path['extension']=='jpg'||$path['extension']=='jpeg') 
$image = imagecreatefromjpeg($src); 
$size = getimagesize($_GET['src']); 
$dest_x = $size[0] - $watermark_width-10; 
$dest_y = $size[1] - $watermark_height-10; 
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 50); 
imagejpeg($image); 
imagedestroy($image); 
imagedestroy($watermark); 

?> 

詳細信息,Image watermark in PHP