Как создать такие линейки на своем сайте?

Алгоритм построения линеек предельно прост. Для этого нам понадобятся модули GD/imagemagic, rewrite и стандартный набор работы со строками, страницами, базой данных.  Для начала, давайте определимся, хотим ли мы генерировать линейки с использованием базы данных, будут ли они изменять свой размер, будут ли загружаться изображения. Для простоты эксперимента давайте возьмем линейки без базы данных, без различных изображений. У нас есть изображения begunok.png, fon.jpg, длина линейки 365 дней, поступает запрос вида http://site.ru/lines/1234.jpg, где 1234 - количество дней, прошедших со дня 1 января 1970 года (не потому что это именины Григория и Тимофея Laughing, а потому что ОС Unix считает время именно в днях(или секундах) после этой даты). Перенаправляем данный запрос с помощью mod_rewrite на php обработчик (а почему бы сразу нельзя было сделать http://site.ru/getline.php?date=1234 ? А потому что многие форумы не берут динамическое содержимое в подписи)

В .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^\/lines\/
RewriteRule ^(.*)$ getline.php?date=%{REQUEST_URI} [L]

В скрипте: 

$d=intval($_GET["date"]);

Считаем разницу между сегодняшним днем и тем, который мы выбрали. Затем берем остаток от деления этого числа на 365, поделим его на 365 и умножим на длину линейки, чтобы выяснить, где должен находиться бегунок (расчеты весьма грубые, не учитывают ширину бегунка, различных длин линейки и так далее, но нас ведь интересует принцип, правда?).

$x=($d%365)/365*$TotalSY;

Итак, мы получили координату x, где должен находиться бегунок. Все исходные данные у нас есть. Приступим к формированию и выводу изображения. Для начала, перешлём mime-тип содержимого, выберем JPEG, так как он занимает меньше места и как нельзя лучше подходит нам для кодирования линеек.

Header("Content-type: image/jpeg");

Создадим изображение, которое будет нашей линейкой.

$i=imagecreatetruecolor($SX,$TotalSY);

imagefilledrectangle($i,0,0,$SX,$TotalSY,$white);

Скопируем на него фон.

function ImageFromFile($str)
{
if(!file_exists($str))
return 0;
$arr=explode(".",$str);
$check=strtolower($arr[Count($arr)-1]);
$check=strtolower($arr[Count($arr)-1]);
if($check=="png")
return ImageCreateFromPng($str);
if($check=="jpg"||$check=="jpeg")
return ImageCreateFromJpeg($str);
if($check=="gif")
return ImageCreateFromGif($str);
}

$f = ImageFromFile("fon.jpg");

imagecopyresampled($i,$f,0,0,0,0,$SX,$SY,imagesx($f),imagesy($f));

Скопируем на него бегунок в то место, которое мы нашли до этого.

$b = ImageFromFile("begunok.png");

imagecopyresampled($i,$b,$x,0,0,0,$bsx,$bsy,imagesx($b),imagesy($b));

Вставим текст - сколько дней прошло с той даты (не будем делить дни на месяцы и годы - алгоритм и даже готовые скрипты можно найти в сети или придумать самому, в том числе поручить это дело отчасти PHP или MySQL).

imagettftext($i,8,0,2,$SYC,$textcolor,"arial.ttf",$Text);

Выведем данное изображение клиенту.

$Quality=85;
ImageJpeg($i,"",$Quality);

Вот и все. Чтобы научить эту систему обрабатывать разные изображения, размеры необходимо добавить в строку запроса соответствующий контент, например, http://site.ru/lines/1234_begunok.png_fon.jpg_300x50_dnei|proshlo.jpg . Используем функцию explode для разделения переменных.

Так же, не стоит забывать, что чем больше параметров, тем больше длина строки, тем сложнее становится алгоритм, тем ближе мы подбираемся к ограничению в 255 символов, которые можно использовать в GET-запросе, поэтому можно использовать БД для хранения всех этих данных. Чтобы научить эту систему загружать фотки используйте любой upload скрипт, но ни в коем случае не забывайте про безопасность на нескольких уровнях, так как загруженный и запущенный php скрипт может уничтожить весь ваш сайт. Так же, не стоит пренебрегать производительностью, поэтому можно ввести кэширование, оптимизацию запросов при использовании БД. В остальном - все по-прежнему. Вот упрощенно так выглядит скрипт формирования линеек.

Также, вы можете не заморачиваться и заказать линейки для вашего сайта у нас, оставив свои координаты здесь.

Читайте также:

Как получить цвета радуги на компьютере программно? 


Заказ скрипта

Приветствую!
Ссылка заказать (http://flines.ru/orderlines) не работает, потому пишу сюда.
Скажите сколько будет стоить приобретение вашего скрипта и услуги по его доработке?