2012-02-23 108 views
0

我有水印文字的代码到图像放置图像水印

if($type==".jpg" or $type==".jpeg"){ 
    $im = imagecreatefromjpeg($uploaddir.$randnum); 
}elseif($type==".gif"){ 
    $im = imagecreatefromgif($uploaddir.$randnum); 
}else{ 
    $im = imagecreatefrompng($uploaddir.$randnum); 
} 

$imagesize = getimagesize($uploaddir.$randnum); 

$x_offset = 7; 
$y_offset = 8; 

$textcolor = imagecolorallocate($im, 0xCC, 0xCC, 0xCC); 
$textcolor2 = imagecolorallocate($im, 0x00, 0x00, 0x00); 
imagestring($im, 5, $x_offset, $y_offset, strtoupper($_POST['code']), $textcolor2); 
if($type==".jpg" or $type==".jpeg"){ 
    imagejpeg($im,$uploaddir.$randnum,100); 
}elseif($type==".gif"){ 
    imagegif($im,$uploaddir.$randnum,100); 
}else{ 
    imagepng($im,$uploaddir.$randnum,8);  
} 

上面的代码打印在左上角的水印......但我想它要对在底部写对。

任何帮助家伙

问候

回答

0

尝试使用这个地方你正在使用imagestring()

$font_size = 5; 
$margin = 7; 
$text_width = imagefontwidth($font_size)*strlen($_POST['code']); 
$text_height = imagefontheight($font_size); //assuming it's one line 
imagestring($im, $font_size, $imagesize[0] - $text_width - $margin, $imagesize[1] - $text_height - $margin, strtoupper($_POST['code']), $textcolor2); 

变化$margin$font_size满足您的需求。

2

这是实际的地方水印行:

imagestring($im, 5, $x_offset, $y_offset, strtoupper($_POST['code']), $textcolor2); 

水印的水平位置将取决于你所设定$x_offset是。现在是7,这意味着左边7个像素。

为了得到它为7个像素组成的权利,将其设置为整个图像的宽度,减去(7 +水印的宽度)

找到水印的宽度与imagettfbbox

设置垂直位置的原理是相同的。

0

如果你想将它移至底部,只是改变你的y偏移是图像的底部,的“8”,而不是(这可能是靠近顶部):

$y_offset = $imagesize['height'] - 7; 
+0

没有亲爱的不工作 – 2012-02-23 22:34:33

+0

当你这样做时发生了什么?水印有多高?它需要是图像的大小减去水印的大小。我只是猜测水印的高度为'7'。 – cegfault 2012-02-23 22:38:23

+0

水印是文字而不是图像亲爱的 – 2012-02-23 22:52:33