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

  • Автор темы Автор темы LONGMAN
  • Дата начала Дата начала

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);
И вот, как мне уменшить/увелечить размеры текста и задать координаты так что надпись нанести точно на правом нижнем углу?
 
imagettftext
imagettfbox
если возникнут проблемы - идем в поиск.
 
Поискал, но алгоритм как-то трудноват.. Может у кого-нибудь есть готовый класс или функция для этого?
 
моя функция, вписывает строку текст в заданную рамку, делая надпись многострочной по ширине рамки
пример на моей аватарке 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];
}
 
Автор оригинала: *****
и что же тебе в алгоритме показалось трудным?
Ну как то запутано всё.. :-) И кстати спасибо за грамматическую поддержку, я учусь две языка php и russian одновременно :-)

-~{}~ 11.03.09 17:38:

DiMA, подскажи пожалуйста каждый за что отвечает (входные переменные) и почему передаёшь переменную $out ссылкой?
 
1. изучишь мануал - узнаешь
2. потому что функция рисует по созданной извне картики
 
DiMA, мануал изучаю быстрими темпамы.. Можешь показать хоть пример использования этой функции? На пример имеется файл $file = 'img.jpg'; потом как нарисовать на него текст 'text' на белом в нижнем правом углу? Не изменяя размеры самой картинки
 
Сверху