2012-02-23 3 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

Если вы хотите, чтобы переместить его на дно, просто изменить смещение, чтобы быть в нижней части изображения вашего у, вместо «8» (который, вероятно, около вершины):

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

no dear does not work –

+0

Что произошло, когда вы это сделали? Насколько высок водяной знак? Это должен быть размер изображения минус размер водяного знака. Я просто догадываюсь, что водяной знак имеет высоту «7». – cegfault

+0

знак воды - это текст, не образ дорогой –

Смежные вопросы