2012-12-22 27 views
-1

我會明白這一點。我使用htaccess安裝了Watermark。一切正常,但我不知道如何使腳本不放置在小於200x200的圖像上的水印。此外,水印在底部顯示灰色線,其中watermark.png合適。我如何刪除該行?如何避免在小圖像上放置水印

我爲沒有付出努力付出了代價。我做了4個小時的研究,修改得非常糟糕,以至於我的照片被毀了。我發現要添加到PHP的行不放在小圖像上的水印,但不知道在哪裏放置它。

這是在圖像上放置水印的.php文件。請幫忙是否對我來說很複雜。

<?php 
$basedir="/uploads/"; 
$watermarkimage="tbwm.png"; 

$file=basename($_GET['i' ]); 

$image = $basedir."/".$file; 
$watermark = $basedir."/".$watermarkimage; 

$im = imagecreatefrompng($watermark); 

$ext = substr($image, -3); 

if (strtolower($ext) == "gif") { 
if (!$im2 = imagecreatefromgif($image)) { 
echo "Error opening $image!"; exit; 
} 
} else if(strtolower($ext) == "jpg") { 
if (!$im2 = imagecreatefromjpeg($image)) { 
echo "Error opening $image!"; exit; 
} 
} else if(strtolower($ext) == "png") { 
if (!$im2 = imagecreatefrompng($image)) { 
echo "Error opening $image!"; exit; 
} 
} else { 
die; 
} 
imagefilledrectangle($im2, 0 , (imagesy($im2))-(imagesy($im)) , imagesx($im2) , imagesy($im2) , imagecolorallocatealpha($im2, 0, 0, 0, 100)); 
imagecopy($im2, $im, (imagesx($im2)-(imagesx($im))), (imagesy($im2))-(imagesy($im)), 0, 0, imagesx($im), imagesy($im)); 

$last_modified = gmdate('D, d M Y H:i:s T' , filemtime ($image)); 

header("Last-Modified: $last_modified"); 
header("Content-Type: image/jpeg"); 
imagejpeg($im2,NULL,95); 
imagedestroy($im); 
imagedestroy($im2); 

?> 
+0

內如何聯繫腳本支持?這不是我們免費提供工作的網站。 – zerkms

+0

所以......你的問題是關於.htaccess,但是,你的htaccess代碼不會顯示給我們。如果htaccess支持的網址不起作用,爲什麼你能夠從php或其他地方訪問它? – Kristian

+0

我做到了,但沒有回覆我。我做了研究並從其他腳本中找到了這條線,它不適用於我,我喜歡這一行負責不放置水印//水印僅在圖像上垂直和水平方向施加到250像素。 (($ info_o [0]> 250)&&($ info_o [1]> 250))和PHP的傻瓜說,這個名字是負責灰線「imagefilledrectangle」,但沒有關於如何改變的例子它。 –

回答

1

快捷的方式:
只是把imagecopy函數調用到if(imagesx(im2) > 250 && imagesy(im2) > 250)

if (imagesx($im2) > 250 && imagesy($im2) > 250) { 
    imagefilledrectangle($im2, 0 , (imagesy($im2))-(imagesy($im)) , imagesx($im2) , imagesy($im2) , imagecolorallocatealpha($im2, 0, 0, 0, 100)); 
    imagecopy($im2, $im, (imagesx($im2)-(imagesx($im))), (imagesy($im2))-(imagesy($im)), 0, 0, imagesx($im), imagesy($im)); 
} 

很長的路要走:
把水印IM創造了一切的if

+0

謝謝,但它沒有奏效。我做了這個改變,清除了歷史和緩存。上傳的照片並沒有顯示任何內容。水印不會顯示在小圖片或大圖片上。除了那條灰線。 –

+0

Ups ...再次檢查... IF中的imagesx($ im2),其中缺少變量im2的$ $ – Manatax

+0

我想通了。我把這個if(imagesx($ im2)> 250 && imagesy($ im2)> 250)與$符號,它的工作。但是這條灰線顯示在每張照片上。如何擺脫它? –