Создание юзербаров с помощью php и Imagick
По мистическим причинам, о которых я уже говорил в предыдущем посте про капчу, мне также пришлось переделать генератор юзербаров под imagick.
Здесь опишу способ создание юзербаров для пользователей всемирно любимой пыхи.
Для начала возьмем фон для юзербара, любезно предоставленный нашим почетным пользователем Frozzeg (и мною немного дополненный):
![]()
Как Вы уже догадались, в правой части будем вписывать имя пользователя, которое мы будем передавать скрипту GET’ом (например, bar.php?user=md5). Ну и так как мы модные типочки — будем их кешировать следующим образом:
1 2 3 4 5 6 7 8 9 | $text = isset($_GET['user']) ? urldecode($_GET['user']) : ''; $cache_file = dirname(__FILE__) . '/cache/' . md5($text) . '.gif'; if (file_exists($cache_file)) { header("Content-Type: image/gif"); print file_get_contents($cache_file); exit; } |
Итак, сама отрисовка юзербара. Сначала мы будем накладывать текст-тень (на 1 пиксель ниже и правее текста), а затем сверху сам текст.
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 | // Возьмем какой-нибудь шрифт (у нас это Candara Bold) $font = dirname(__FILE__) . '/candara.ttf'; $bg = dirname(__FILE__) . '/bg.gif'; // установим цвет текста и тени $font_color = '#666666'; $shadow_color = '#fefefe'; // создаем объект $im = new Imagick($bg); // рисуем тень $draw = new ImagickDraw(); $draw->setFont($font); $draw->setFontSize(12); $draw->setFillColor(new ImagickPixel($shadow_color)); $draw->annotation(258, 14, $text); $im->drawImage($draw); // рисуем текст (на пиксель выши и левее тени) $draw = new ImagickDraw(); $draw->setFont($font); $draw->setFontSize(12); $draw->setFillColor(new ImagickPixel($font_color)); $draw->annotation(257, 13, $text); $im->drawImage($draw); $draw->destroy(); // записываем в кеш и выводим $im->setImageFormat('gif'); $im->writeImage($cache_file); header("Content-Type: image/gif"); print $im; $im->destroy(); |
Результат работы (bar.php?user=md5):
![]()
Всея ПЫХА
helldude
adw0rd
Мавр
ГО
Irinax
Охуенно!
Охуеть, ты стал постить технические статьи!
да я сам охуел)
даже вон подсветку говнокода подкрутил ))
Что юзаешь для подсветки? Рекомендую CodeColorer!
юзаю CodeColorer, а чем он отличается от того, что ты рекомендуешь? )
:)
Прикольно, а слабо накладываемый текст по правому краю выравнивать? :)
а нахуя?
Шо у меня за аватар? Кто его рисовал в паинте?
посети gravatar.com
Ответ истиного кодера :) А затем что md5 конечно ник короткий и влезает, а вот впиши туда ник из 15 символов и хрен он туда поместится. Да и исполнения юзербаров бывают разными. Вот хочется выравнивание по правому краю. Умеешь?
считать ширину всех символов и отнимать из ширины юзербара
если есть конкретная задача, то прийдется заморачиваться
если нет — в пизду
это не css, тут нет text-align:right;
Да не так уж сильно и заморачиваться :) Ладно, спасибо, я ужо нашёл как сделать.
з.ы. Шо, тоже не спиться? :)
з.з.ы. Ты мне на кубань.ру писал про комп… Я тебя там Алексеем назвал :) Сорь, всегда имена Александр и Алексей путаю.
кул
з.ы. не, дела, дела..
з.з.ы. искал себе железо под домашний сервак, инет вайфайный раздавать и винт 1.5 тб держать..
Нашёл? а то он у меня частично сохранился… можем договориться. по бартеру
по бартеру на что? )
уже нашел приличную тачку..
Ну нашёл так нашёл :) И ладненько. Написал-то я тут тебе не по теме :) В контакт скину на что по бартеру, если интесно
на мыло скинь mail@epsyl.ru