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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Надпись на картинке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Как на одноклассниках
LONGMAN
Отправлено: 30 Апреля, 2009 - 14:26:07
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




На сайте есть выгрузка фотки юзером. Мне нужно нанести на них в правом нижнем углу надпись "адрес сайта" как сделано на пример на сайте odnoklassniki.ru Моя проблема в том что я не знаю каковы будут размеры выгружаемой картинки и не могу определить координаты надписи. Может есть готовый класс, функция, алгоритм для этого?
 
 Top
EuGen Администратор
Отправлено: 30 Апреля, 2009 - 14:27:39
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
LONGMAN
Отправлено: 30 Апреля, 2009 - 14:29:16
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Знаю я это Улыбка но не знаю как вычислить коодринаты для надписи
 
 Top
EuGen Администратор
Отправлено: 30 Апреля, 2009 - 14:31:50
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Всмысле - размеры это (X/a)*(Y/b)
где X*Y - размер картинки,
a - скейлинг по ширине,
b - скейлинг по высоте
Не очень понял проблему, если Вы знаете высоту и ширину, а так же то, какую часть (например, в процентах, или долях) от картинки должна занимать надпись. Или я не правильно понял?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
LONGMAN
Отправлено: 30 Апреля, 2009 - 14:36:50
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Процент не знаю.. Знаю ширину и высоту картинки.. А потом что делать? Как мне нанести точно в правом нижнем углу надпись?
 
 Top
EuGen Администратор
Отправлено: 30 Апреля, 2009 - 14:47:35
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




1.Вычислите размер надписи. Для этого определите размер шрифта:
a=imagefontheight
b=C*(imagefontwidth+P)
Где
C=strlen("Текст надписи"),
P - ширина отступа между буквами.

2.Вычислите координаты надписи. Это будет
X-a-U;Y-b-V
Где X*Y - размер картинки, a*b - размер надписи.
U - отступ от края по высоте,
V - отступ от края по ширине
(их можно установить в 0)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
LONGMAN
Отправлено: 30 Апреля, 2009 - 15:01:27
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Как узнать ширину отступа между буквамы?
(Добавление)
Этот код правильный?
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.  
 
 Top
Champion Супермодератор
Отправлено: 30 Апреля, 2009 - 15:41:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




LONGMAN пишет:
Этот код правильный?
Удивительный вопрос. Проверь)
 
 Top
LONGMAN
Отправлено: 30 Апреля, 2009 - 16:09:06
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




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. ?>

(Добавление)
Подскажите что мне сделать
 
 Top
LONGMAN
Отправлено: 30 Апреля, 2009 - 20:55:41
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




?
 
 Top
LONGMAN
Отправлено: 01 Мая, 2009 - 14:00:43
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Поможет кто нибудь?
 
 Top
LONGMAN
Отправлено: 01 Мая, 2009 - 20:03:55
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Знатоки, где вы
 
 Top
valenok
Отправлено: 01 Мая, 2009 - 23:48:30
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




а зачем тебе ширина букв фонта ? Берешь и рисуешь свою надпись на 10 метров от правого края. Влезло ? Рисуешь ближе. Влезло ? Еще ближе. До тех пор пока будет не в упор.
Дальше вычитыаешь из ширины картинки Х координату своего текста и получится твоя ширина.
А потом на любой картинке вычитаешь от ширины картинки ширину своей надписи
и на таком расстоянии от правого края рисуешь надпись.


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 04 Мая, 2009 - 10:51:09
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ну а что там не так работет-то? А для поиска ширины есть функция, поищите. Или сделайте как valenok сказал.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
LONGMAN
Отправлено: 04 Мая, 2009 - 17:15:05
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Разобрался, большое спасибо вам.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB