All pastes #655418 Raw Copy code Copy link Edit

image charts / last.fm

public unlisted php v1 · immutable
#655418 ·published 2007-08-13 11:06 UTC
rendered paste body
<?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);?>