Анимация
JavaScript
|
Главная Библионтека Можно указать другую функцию получения цвета, задав ее имя в параметре $func (например, imageColorClosest). function imageColorHex($im, $c, $func="imageColorAllocate") { Сначала дополняем нулями в начале, если нужно for($i=strlen($c); $i<6; $c=0.$c; $r=hexdec(substr($c,0,2)); $g=hexdec(substr($c,2,2)); $b=hexdec(substr($c,4,2)); return $func($im,$r,$g,$b); Перв1м делом устанавливаем параметры по умолчанию. Эти параметры можно переопределять при вызове сценария (например, ttf.php?a=20&f=arial&text=Hi+there) if(!@$a) $a=30; угол поворота (по умолчанию 30) if(!@$s) $s=80; размер шрифта (80) if(!@$b) $b="00AAAA"; цвет заднего плана ( зеленовато-голубой) if(!@$c) $c="FFFF00"; цвет букв ( ярко-желтый) if(!@$d) $d=10; зазор между текстом и границей рисунка if(!@$f) $f="times"; шрифт if(!@$text) $text="Hello world!"; текст Получаем границы рамки текста $Bnd=imageTTFBBox($s,$a,getcwd()."/$f.ttf",$text); Массивы x- и у-координат всех точек $X=$Y=array(); Заполняем эти массивы на основании $Bnd for($i=0; $i<4; $i++) { $X[]=$Bnd[$i*2]; $Y[]=$Bnd[$i*2+1]; Вычисляем размер картинки с учетом зазора $d $MX=max($X)-min($X)+$d*2; размер по x $MY=max($Y)-min($Y)+$d*2; размер по у Теперь вгчисляем координаты базовой точки строки, чтобы она располагалась точно по центру поля картинки $x=$d+$Bnd[0]-min($X)+2; $y=$d+$Bnd[1]-min($Y)+2; Создаем рисунок нужного размера $im = imageCreate($MX,$MY); Создаем в палитре новые цвета $black = imageColorHex($im, 0); черн1Й (тень) $back = imageColorHex($im, $b); задниЙ план $front = imageColorHex($im, $c); цвет букв Очищаем задниЙ план imageFill($im,0,0,$back); imageRectangle($im,0,0,$MX-1,$MY-1,$black); В1водим тень от текста imagettftext($im,$s,$a,$x+2,$y+2,$black,getcwd()."/$f.ttf",$text); В1водим текст imagettftext($im,$s,$a,$x,$y,$front,getcwd()."/$f.ttf",$text); Выводим рисунок в браузер Header("Content-type: image/png"); imagePng($im); ?> Сценарий из листинга 23.3 (назовем его ttf.php) генерирует картинку с заданным цветом заднего плана, в которую выводится указанная строка с тенью. При этом используется TrueType-шрифт, а также определяются размер строки, угол ее наклона, цвет и т. д. Формат вызова сценария имеет следующий общий вид: ttf.php?a=Градусы&s=Размер&b=ЗаднийЦвет&c=Цвет&d=Зазор&f=Фонт&text=Текст Ни один из этих параметров не является обязательным - в случае пропуска подставляются значения по умолчанию (см. листинг 23.3). Необходимо заметить, что прежде, чем запускать сценарий, нужно скопировать TTF-файл со шрифтом в каталог, где расположена программа (например, взяв его из C:/wiNDOWS/FONTS для платформы Windows). Параметр f задает имя этого файла без расширения, и ищется он в текущем каталоге. По умолчанию выбран шрифт Times. PHP, как и любая другая крупная программа, имеет множество различных настроечных параметров. Слава богу, большинство из них по умолчанию уже имеют правильные значения. Тем не менее, нередко приходится эти параметры изменять или проверять. В этой главе мы вкратце рассмотрим основные возможности конфигурирования PHP и некоторые полезные функции, управляющие работой интерпретатора. Информационные функции Прежде всего давайте познакомимся с двумя функциями, одна из которых выводит текущее состояние всех параметров PHP, а вторая - версию интерпретатора. int phpinfo() Эта функция, которая в общем-то не должна появляться в законченной программе, выводит в браузер большое количество различной информации, касающейся настроек PHP и параметров вызова сценария. Именно, в стандартный выходной поток (то есть в браузер пользователя) печатается: □ версия PHP; □ опции, которые были установлены при компиляции PHP; □ информация о дополнительных модулях; □ переменные окружения, в том числе и установленные сервером при получении запроса от пользователя на вызов сценария; □ версия операционной системы; □ состояние основных и локальных настроек интерпретатора; □ HTTP-заголовки; □ лицензия PHP. Управление интерпретатором 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 [ 109 ] 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |