Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Надпись на картинке
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Надпись на картинке

Страниц (1): [1]
 

1. LONGMAN - 30 Апреля, 2009 - 14:26:07 - перейти к сообщению
На сайте есть выгрузка фотки юзером. Мне нужно нанести на них в правом нижнем углу надпись "адрес сайта" как сделано на пример на сайте odnoklassniki.ru Моя проблема в том что я не знаю каковы будут размеры выгружаемой картинки и не могу определить координаты надписи. Может есть готовый класс, функция, алгоритм для этого?
2. EuGen - 30 Апреля, 2009 - 14:27:39 - перейти к сообщению
3. LONGMAN - 30 Апреля, 2009 - 14:29:16 - перейти к сообщению
Знаю я это Улыбка но не знаю как вычислить коодринаты для надписи
4. EuGen - 30 Апреля, 2009 - 14:31:50 - перейти к сообщению
Всмысле - размеры это (X/a)*(Y/b)
где X*Y - размер картинки,
a - скейлинг по ширине,
b - скейлинг по высоте
Не очень понял проблему, если Вы знаете высоту и ширину, а так же то, какую часть (например, в процентах, или долях) от картинки должна занимать надпись. Или я не правильно понял?
5. LONGMAN - 30 Апреля, 2009 - 14:36:50 - перейти к сообщению
Процент не знаю.. Знаю ширину и высоту картинки.. А потом что делать? Как мне нанести точно в правом нижнем углу надпись?
6. EuGen - 30 Апреля, 2009 - 14:47:35 - перейти к сообщению
1.Вычислите размер надписи. Для этого определите размер шрифта:
a=imagefontheight
b=C*(imagefontwidth+P)
Где
C=strlen("Текст надписи"),
P - ширина отступа между буквами.

2.Вычислите координаты надписи. Это будет
X-a-U;Y-b-V
Где X*Y - размер картинки, a*b - размер надписи.
U - отступ от края по высоте,
V - отступ от края по ширине
(их можно установить в 0)
7. LONGMAN - 30 Апреля, 2009 - 15:01:27 - перейти к сообщению
Как узнать ширину отступа между буквамы?
(Добавление)
Этот код правильный?
PHP:
скопировать код в буфер обмена
  1. $fontsize = 14;
  2. $p = 0; //не знаю как вычислить
  3. $text = 'geg.ge';
  4. $get = getimagesize('img.jpg');
  5. $picX = $get[0];
  6. $picY = $get[1];
  7.  
  8. $a = imagefontheight($fontsize);
  9. $b = strlen($text) * imagefontwidth($fontsize) + $p;
  10.  
  11. $fontX = $picX - $a; //координат X для надписи
  12. $fontY = $picY - $b; //координат Y для надписи
  13.  
8. Champion - 30 Апреля, 2009 - 15:41:02 - перейти к сообщению
LONGMAN пишет:
Этот код правильный?
Удивительный вопрос. Проверь)
9. LONGMAN - 30 Апреля, 2009 - 16:09:06 - перейти к сообщению
Champion, наносит надпись но нетуда Улыбка вот весь код:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $path = '../..';
  3.  
  4. $img = 'foto.jpg';
  5. $target = 'foto2.jpg';
  6. $font = $path.'/inc/font.ttf';
  7. $fontsize = 30;
  8. $p = 2;
  9. $text = 'geg.ge';
  10. $get = getimagesize($img);
  11. $picX = $get[0];
  12. $picY = $get[1];
  13.  
  14. $a = imagefontheight($fontsize);
  15. $b = strlen($text) * imagefontwidth($fontsize) + $p;
  16.  
  17. $fontX = $picX - $a;
  18. $fontY = $picY - $b;
  19.  
  20.  
  21. $type = $get[2];
  22. switch($type)
  23. {
  24. case 1: $newimage = @imagecreatefromgif($img); break;
  25. case 2: $newimage = @imagecreatefromjpeg($img); break;
  26. case 3: $newimage = @imagecreatefrompng($img); break;
  27. default: false;
  28. break;
  29. }
  30.  
  31. $col = imagecolorallocate($newimage, 255, 255, 255);
  32.  
  33. imagettftext($newimage, $fontsize, 0, $fontX, $fontY, $col, $font, $text);
  34.  
  35. $ext = strtolower(substr($target, strrpos($target, ".") + 1));
  36. switch($ext)
  37. {
  38. case "gif":
  39. imagegif($newimage, $target);
  40. break;
  41. case "jpg":
  42. case "jpeg":
  43. imagejpeg($newimage, $target);
  44. break;
  45. case "png":
  46. imagepng($newimage, $target);
  47. break;
  48. default: false;
  49. break;
  50. }
  51.  
  52. imagedestroy($newimage);
  53. ?>

(Добавление)
Подскажите что мне сделать
10. LONGMAN - 30 Апреля, 2009 - 20:55:41 - перейти к сообщению
?
11. LONGMAN - 01 Мая, 2009 - 14:00:43 - перейти к сообщению
Поможет кто нибудь?
12. LONGMAN - 01 Мая, 2009 - 20:03:55 - перейти к сообщению
Знатоки, где вы
13. valenok - 01 Мая, 2009 - 23:48:30 - перейти к сообщению
а зачем тебе ширина букв фонта ? Берешь и рисуешь свою надпись на 10 метров от правого края. Влезло ? Рисуешь ближе. Влезло ? Еще ближе. До тех пор пока будет не в упор.
Дальше вычитыаешь из ширины картинки Х координату своего текста и получится твоя ширина.
А потом на любой картинке вычитаешь от ширины картинки ширину своей надписи
и на таком расстоянии от правого края рисуешь надпись.
14. EuGen - 04 Мая, 2009 - 10:51:09 - перейти к сообщению
Ну а что там не так работет-то? А для поиска ширины есть функция, поищите. Или сделайте как valenok сказал.
15. LONGMAN - 04 Мая, 2009 - 17:15:05 - перейти к сообщению
Разобрался, большое спасибо вам.

 

Powered by ExBB FM 1.0 RC1