Как вывести текст на картинку с инверсным ободком

PitBult

Новичок
Как вывести текст на картинку с инверсным ободком

Вот искал я повсюду, в различных форумах, но так и не нашел, то чего нужно!

Проблема у меня такая:

Хочу вывести на картинку текст например белого цвета! На темной картинке смотрится и читается отлично, а вот на белой ее не видно! То же самое и с текстом черного цвета.

Вот решил сделать контур белого шрифта черным цветом. Тогда текст будет читаться на любой картинке отлично. Только вот проблема!!!
КАК это сделать?

PHP:
imagettftext($im, 10, 0, $width-100, $height-10, $color, 'arial.ttf',"Hello!");
За ранее благодарю за помощь!!!
 

440hz

php.ru
в таких случаях я не делал обводку ибо в прямом виде ее не сделать.

я смещал черный текст относительно белого на 1 пиксель вправо и вниз. получалась тень.

можно попробовать сместить на пиксел по всем координатам.
 

PitBult

Новичок
Странно, как я сам до этого не додумался. Да, смотрится вроде неплохо!
Осталось только функцию написать универсальную и кинуть ее остальным.

PHP:
$color = imagecolorallocatealpha($im, 255, 255, 255, 0);
$color2 = imagecolorallocatealpha($im, 0, 0, 0, 0);

imagettftext($im, 10, 0, $width-99, $height-9, $color2, 'arial.ttf',$text);
imagettftext($im, 10, 0, $width-99, $height-11, $color2, 'arial.ttf',$text);
imagettftext($im, 10, 0, $width-101, $height-9, $color2, 'arial.ttf',$text);
imagettftext($im, 10, 0, $width-101, $height-11, $color2, 'arial.ttf',$text);

imagettftext($im, 10, 0, $width-100, $height-10, $color, 'arial.ttf',$text);
Спасибо, за помощь! Если кто еще, что-то предложит, буду рад! Может можно как-то не нагружать работу
PHP 4-мя дополн. функциями imagettftext?
 

Tor

Новичок
Может можно как-то не нагружать работу
PHP 4-мя дополн. функциями imagettftext?
да, пройти по всем пикселам и устроить блюр

я вот не понимаю, у тебя что - это самое узкое место по производительности?
 

440hz

php.ru
Автор оригинала: Tor
в чем проблема?
в алгоритме?
с этим проблем пока нет. 8) в свое время довольно плотно занимался алгоритмами обработки изображений в полиграфии. много чего интересного почепнул из этого.

в свое время впечатлил алгоритм рисования круга используя только сложение и вычитание. на память не вспомню, но впечатлился ...
 

_Bill

Новичок
Для увеличения контрастности-читаемости шрифта дизайнеры используют тонкую обводку шрифта линией контрастного цвета. Например - красные, синие или жёлтые буквы - белая линия. Кроме того, насколько мне не изменяет память, gd позволяет получить цвет пиксела по координате - так что можно реализовать фотошоповский алгоритм "Исключение".
1. Берёшь цвета с области, куда хочешь поместить надпись, помещаешь в матрицу
2. Вычисляешь высоту матрицы - предельное соотношение цветового контраста min/max
3. Экспериментально или не экспериментально можно вычислить некоторый порог, при котором обводку и цвет шрифта можно делать одинаковой по всей поверхности перекрытия или разной.
4. Если разной, то вставить контрастный pad мутным квадратиком из 3 gifов или pngов - красиво будет. Или исключающе нарисовать обводку, изменяя цвета пикселов на отрастеризованном изображении надписи, утолщенном на один пиксель...

Муть, конечно... Но если надо, то можно сделать
 

Tor

Новичок
всегда умиляло кол-во велосипедов на единицу площади
 

PitBult

Новичок
_Bill

Это не выход из положения, т.к. часть изображения может быть в разных цветовых пикселях! Вдруг скрипт определит точку белого цвета? А она там единственная на изображении? ... тогда текст выводимый, будет темным и не видим.
 

440hz

php.ru
_Bill
настоящие дизайнеры делают контрастную подложку, а не парятся с блуром, обводкой и тому подобными извращениями ...

8)))))))
 
Сверху