<?php// Хедер - image/gif. Те же браузеры будут думать, что это обычная картинка. :)header('Content-type: image/gif');// Указываем ваш логин в last.fm:$username = "RJ";// file_get_contents возвращает содержимое файла в $string:$string = file_get_contents("http://ws.audioscrobbler.com/1.0/user/$username/recenttracks.txt");// Ширина будущего изображения. Так как будет использоваться моноширинный шрифт (который в функции imagestring по умолчанию) второго размера, размеры одного символа, если не ошибаюсь - 12х6 пикселей.$imgwidth = (strlen($string))*6;// Разбиваем все десять строчек и кладем их в массив $strln.$strln = explode("\n", $string);// Далее - простым циклом высчитываем наиболее длинную строкуfor ($i = 0; $i < 10; $i++) { $shortstr = substr($strln[$i],strpos($strln[$i],",")+1,strlen($strln[$i])); $ilen = strlen($shortstr); if ( $ilen > $longestlen ) { $longestlen = $ilen; }}// $longestlen - количество символов в наиболее длинной строке. Это необходимо // для того, чтобы высчитать конечную ширину изображения.// Ограничиваем размеры изображения. Мы ведь не хотим, чтобы после прослушанного// трека с очень длинным названием наша картинка разрослась до ужасных размеров?if ($longestlen > 50) { $longestlen = 50; }// создаем изображение. 140 пикселей в высоту и N пикселей (по 6 пикселей на символ) // в ширину.$myimg = imagecreate($longestlen*6, 140);// делаем прозрачный фон:$bg_color = imagecolorallocate($myimg, 35, 35, 35);imagecolortransparent($myimg, $bg_color);// теперь цикл, который будет по строчке отрисовывать recent tracks:for ($i = 0; $i < 10; $i++) { // на этом шаге удаляем все перед первой запятой (включительно). $shortstr = substr($strln[$i],strpos($strln[$i],",")+1); /* отрисовываем надпись: $myimg - созданное изображение 2 - размер шрифта 0 - позиция слева, с которой начинать отрисовку 14*$i - позиция сверху, с которой начинать отрисовку. В принципе, 14 пикселей в высоту для каждой строки выглядит лучше всего. $shortstr - собственно, сама строка. imagecolorallocate - задает цвет текста. Там я сделал градиент (который зависит от $i. Мы ведь в цикле) */ imagestring($myimg, 2, 0, 14*$i, $shortstr, imagecolorallocate($myimg, 220-$i*15, 0, 0));}// возвращаем целое изображение:imagegif($myimg);?>