Хроники лаборатории |
Картинка-счетчик на PHP | (← 18 июл 2010г, 23:51 →) |
Есть у меня одна абсолютно бесполезная, но забавная фигулька для LiveInternet.ru: счетчик возраста дневника. Некоторые начали спрашивать, как он устроен. Спрашивали - отвечаем. Сегодня я расскажу вам, как сделать подобный счетчик самостоятельно. Приступим? Хотя перед тем, как начать, уточню: у вас должен быть в распоряжении хостинг и поддержка на нем PHP с включенным модулем GD. Уже страшо? То ли еще будет. Поехали. Для начала выберем, что будет отсчитывать счетчик. Я за пример взял одно давнее свое ожидание, выход «StarCraft 2». Blizzard обещает выпустить его двадцать седьмого числа, вот до этого дня и будем считать секунды. Исходя из темы выбираем фоновую картинку: Неплохо бы еще найти шрифт под стать. Все, приготовления закончились, переходим к написанию скрипта. <?php // Получаем текущие дату-время $currdate=getdate();
// Грузим картинку в память $image=@ImageCreateFromJPEG("sc2.jpg");
// Получаем текущее время в секундах, начиная от 1 января 1970г. $currdate=$currdate[0];
// Дата выхода SC2 - 27.07.2010 $dh=0; $dm=0; $ds=0; $dmt=7; $dd=27; $dy=2010; $datedate=mktime($dh,$dm,$ds,$dmt,$dd,$dy);
// Сколько осталось секунд? $lost=($datedate-$currdate);
// А может, и не осталось ничего уже? if ($lost<=0) { $s_write="NUCLEAR\nLAUNCH\nDETECTED"; } else { // Осталось дней $lost_d=($lost-$lost%86400)/86400; $lost=$lost-$lost_d*86400;
// Осталось часов $lost_h=($lost-$lost%3600)/3600; $lost=$lost-$lost_h*3600;
// Осталось минут $lost_m=($lost-$lost%60)/60; $lost=$lost-$lost_m*60;
// Осталось секунд $lost_s=$lost%60;
$s_write="REMAIN: \n\n0".$lost_d." DAYS\n".$lost_h." HOURS\n". $lost_m." MINUTES\n".$lost_s." SECONDS"; }
// Рисуем на картинке текст, подгружая скаченный шрифт imagettftext($image, 14, 0, 301, 64, 16777215, "starcraft.ttf", "$s_write");
// Отсылаем заголовок: "Это картинка!" header ("Content-type: image/jpeg"); // Отсылаем заголовок: "Срок годности - минута!" header ("Expires: ".date("r",($currdate+60))); // Выгружаем саму картинку... ImageJPEG($image,null,100); ImageDestroy($image); Exit; ?> В результате получится что-то вроде этого: Дальше для верности делается всякое кеширование (чтобы не загружать скрипт генерированием картинки каждое обращение) и тому подобные народные забавы, но это я оставлю вам на самостоятельную проработку.
| RSS HTML рубрики: приемчики | |
|
Случайные записи впридачу: Быть iPhone'ом. (приемчики) Маленькое чудо. (жизненное) Микрозарисовка. (придумалось)
|
Солодовник Константин (19 июл 2010г, 09:33) []
Отличная штука, спасибо! |
V.exeR (19 июл 2010г, 09:46) []
|
Солодовник Константин (19 июл 2010г, 09:50) []
V.exeR, жду конечно, но мне больше сама идея понравилась. Это же можно любую картинку так сделать |
V.exeR (19 июл 2010г, 10:04) []
Солодовник Константин: да я шучу. Да, можно. У меня целы сервис с информерами был (можно было отсчитывать как время до, так и после какой-либо даты), но как-то не прижилось. А еще можно случайную фразу выдавать. Или... Да в общем, была бы фантазия |
i-atemi (19 июл 2010г, 11:40) []
Спасибо, забью в закладки, может пригодится . Если не лень, можно разработки ради поставить сервер с PHP . Загрузка и проверка работы происходит гораздо быстрее))). |
V.exeR (19 июл 2010г, 12:04) []
i-atemi: я именно так и тестирую. На «Денвере» |
zeleboba (20 июл 2010г, 14:36) []
Извиняюсь, что запутал тебя в жуйке А за мануал спасибо. Просто и доступно. Затащил к себе в закладки, ибо пригодится, думаю, скоро |
V.exeR (20 июл 2010г, 16:25) []
zeleboba: да ничего. Кстати, утром упорно искал твой комментарий и свой ответ тут, в блоге. Не найдя, чуть было не решил, что приснилось |
Зиниченко Ольга (26 июл 2010г, 15:20) []
«...у вас должен быть в распоряжении хостиг...» |
V.exeR (26 июл 2010г, 16:02) []
|
exs (26 июл 2010г, 16:22) []
zeleboba, Если ты планируешь такой скрипт на дроидньюс использовать, то сначала со мной побеседуй Зиниченко Ольга, можно и без хостинга, но тогда нужен круглосуточно включённый домашний компьютер с апачем и пхп + если нет выделенного ИП, то воспользоваться сервисом вроде no-ip.com Кстати @ в коде зло |
V.exeR (26 июл 2010г, 19:07) []
exs: Кстати @ в коде зло :) |
Пофиг, все равно картинку генерю и ошибки отключены |
QoSyS (27 июл 2010г, 08:39) []
Зло проявляет себя если не использовать кэширование Не обязательно же только счетчик может быть на картинке, чаще всего какая-нибудь другая информация, которую пропарсили, например, из профиля. Тут определенно нужна задержка ) |
V.exeR (27 июл 2010г, 08:41) []
QoSyS: думаешь, стоит объяснить кеширование?.. |
QoSyS (27 июл 2010г, 09:03) []
Да, немного но стоит. Да и самый простой вариант кэширования - по определенному таймауту обновлять картинку - не так уж сложен ) Можно даже без крона обойтись... |
|
Оставлять комментарии могут только имеющие свой ЖЖ-, ЛИру-аккаунт или еще какой openID (как так?). |
|