我有这个代码用于将文本加水印到图像上
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 :(得分: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
以满足您的需求。