Надпись на картинке

LONGMAN

Dark Side of the Moon..
Надпись на картинке

Есть такая задача, на сайте юзеры делают аплоад картинки и мне нужно нанести на картинке надпись (как на однокласснике сделано), но не знаю какого размера будет сама картинка. По этому иногда надпись не размешается на картинке, иногда совсем не выдно.. Код юзаю самописный, сильно не пиняйте :)
PHP:
// $file - исходная картинка, $w - ширина, $h - высота. 
$im1 = imagecreatefromjpeg($file);
$im2 = imagecreatetruecolor($w,$h);
imagecopyresampled($im2, $im1, 0, 0, 0, 0, $w, $h, imagesx($im1), imagesy($im1));
$x = $w -  105;
$y = $h - 20;
$color = imagecolorallocate ($im2, 200, 200, 200); //color
imagestring($im2,5,$x,$y,"mysite.ge", $color);
imagegif($im2,$filetmp);
imagedestroy($im1);
imagedestroy($im2);
И вот, как мне уменшить/увелечить размеры текста и задать координаты так что надпись нанести точно на правом нижнем углу?
 

Фанат

oncle terrible
Команда форума
imagettftext
imagettfbox
если возникнут проблемы - идем в поиск.
 

LONGMAN

Dark Side of the Moon..
Поискал, но алгоритм как-то трудноват.. Может у кого-нибудь есть готовый класс или функция для этого?
 

DiMA

php.spb.ru
Команда форума
моя функция, вписывает строку текст в заданную рамку, делая надпись многострочной по ширине рамки
пример на моей аватарке http://vkontakte.ru/id1219638
PHP:
function textBox(&$out, $size,  $x,$y, $width,$height, $color, $fn, $text) {
 	$word=explode(" ",preg_replace("!  +!"," ",$text));
 	$buf='';

	for ($i=0; $i<count($word); $i++) {
		$new=($buf?"$buf ":"").$word[$i]." ";
        $tmp=imagettfbbox($size, $angle, $fn, iconv("windows-1251","UTF-8",$new));
        $xsize=$tmp[4]-$tmp[0];
        if ($xsize>=$width) {
			$new=trim($buf)."\n$word[$i] ";
	        $tmp=imagettfbbox($size, $angle, $fn, iconv("windows-1251","UTF-8",$new));
	        $ysize=$tmp[1]-$tmp[5];
	        if ($ysize>=$height) {
	        	$buf=trim($buf)."\x85";
	        	break;
			}
        }
        $buf=$new;
        $line++;
	}

	if (!$line) return 0;

    $b=imagettfbbox($size, $angle, $fn, iconv("windows-1251","UTF-8",$buf));
    imagettftext($out, $size,  0, $x,$y+$size, $color, $fn, iconv("windows-1251","UTF-8",$buf));

    return $b[1]-$b[5];
}
 

LONGMAN

Dark Side of the Moon..
Автор оригинала: *****
и что же тебе в алгоритме показалось трудным?
Ну как то запутано всё.. :) И кстати спасибо за грамматическую поддержку, я учусь две языка php и russian одновременно :)

-~{}~ 11.03.09 17:38:

DiMA, подскажи пожалуйста каждый за что отвечает (входные переменные) и почему передаёшь переменную $out ссылкой?
 

DiMA

php.spb.ru
Команда форума
1. изучишь мануал - узнаешь
2. потому что функция рисует по созданной извне картики
 

LONGMAN

Dark Side of the Moon..
DiMA, мануал изучаю быстрими темпамы.. Можешь показать хоть пример использования этой функции? На пример имеется файл $file = 'img.jpg'; потом как нарисовать на него текст 'text' на белом в нижнем правом углу? Не изменяя размеры самой картинки
 
Сверху