放置图像水印

时间:2012-02-23 22:21:23

标签: php image-processing

我有这个代码用于将文本加水印到图像上

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);    
}

上面的代码是在左上方打印水印......但是我希望它写在右边的底部。

任何帮助人员

问候

3 个答案:

答案 0 :(得分:2)

这是实际放置水印的行:

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

水印的水平位置取决于您设置的$x_offset。现在它是7,这意味着从左边7像素。

要使其为右侧7像素,请将其设置为整个图像的宽度,减去(7 +水印的宽度)

使用imagettfbbox找到水印的宽度。

设置垂直位置的原则相同。

答案 1 :(得分:0)

如果要将其移动到底部,只需将y偏移更改为图像的底部,而不是“8”(可能位于顶部附近):

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

答案 2 :(得分: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以满足您的需求。