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]   

> Без описания
android
Отправлено: 14 Января, 2015 - 16:01:25
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


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




Добрый день, подскажите пожалуйста ответы на пару вопросов:
1) Почему не срабатывает прозрачный фон?
2) Правильно ли я определяю высоту полотна по размеру текста и кол-ва его переносов?
3) Как сделать межстрочный, межбуквенный интервал? (не разбивая весь текст по буквам)

PHP:
скопировать код в буфер обмена
  1.  
  2. header('Content-type: image/png');
  3.  
  4. $width = 47; // ширина
  5. $density = 5.36; // масштаб
  6.  
  7. $color = '000000'; // Цвет текста
  8. $size  = 10; // Размер текста в pt
  9.  
  10. $font = 'fonts/roboto/roboto-regular.ttf';
  11.  
  12.  
  13. $text = "раз раз
  14. переход
  15. еще один";
  16.  
  17. $bbox = imageTTFbBox($size, 0, $font, $text);
  18.  
  19. $width = round($width*$density);
  20.  
  21. if( $bbox[1] == -1 ) {
  22.         $height = $size + 7; // если одна строчка то высота = размеру шрифта + отступ снизу
  23. }
  24. else
  25. {
  26.         $height = $bbox[1] + $size + 7; // если несколько строк то общая высота + (размер шрифта + отступ, почему-то последняя строка в $bbox не засчитывается, поэтому добавляю сам)
  27. }
  28.  
  29. $img = imageCreateTrueColor($width, $height); // Создаем полотно
  30.  
  31. imageFill($img, 0, 0, '0xffffff'); // заливаем
  32. imageColorTransparent($img, '0x000000'); // устанавливаем прозрачность?
  33.  
  34. $y = $size + 4; // устанавливаем отступ от верхней границы (если указать 0, то почему-то текст находится на y: -10  ::huh.gif:: )
  35.  
  36. imageTTFtext($img, $size, 0, 0, $y, '0x' . $color, $font, $text);
  37.  
  38. imagePNG($img);
  39.  

(Добавление)
За последующие ответы большое спасибо!
(Добавление)
С прозрачностью решил так:

PHP:
скопировать код в буфер обмена
  1. imageSaveAlpha($img, true);
  2.  
  3. $transPng = imageColorallocateAlpha($img, 0, 0, 0, 127);       
  4. imageFill($img, 0, 0, $transPng);

(Отредактировано автором: 14 Января, 2015 - 16:09:34)

 
 Top
broshurkaplus
Отправлено: 27 Января, 2015 - 08:15:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


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




создав полотно мы имеем черный цвет, затем заливаем белым, далее устанавливаем прозрачность далее отрисовываем текст, сохраняем png

насколько я помню (на 100% утверждать не буду) если вывести в браузер Ваше белое изображение с прозрачность и отрисованным текстом в блок с черным бакграундом, то изображение будет белым, тк прозрачность теряется, поэтому использование прозрачности обосновано внутри скрипта при каких либо манипуляциях с изображением.
в перспективе возможен выбор только одного формата сохранения файлов пнж или джпг или жиф на сервере, что позволит упростить их последующую обработку (объем кода) и проверять этот формат на стадии загрузки изображений, перед их обработкой.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Графика в PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB