Динамическое создание изображения строки состояния в php - PullRequest
0 голосов
/ 15 мая 2010

Я новичок в создании изображений в php.

Если вы измените значение параметра, ход бара также должен быть изменен на переданное значение

Как я могу реализовать что-то подобное?

Буду признателен, если кто-нибудь сможет пролить свет

Спасибо за помощь

ОБНОВЛЕНИЕ: Я понял это сам, спасибо Грег и всем за предложения ... пожалуйста, проверьте этот код

<?php
header("Content-type: image/png");

$p = $_GET['percentage']; //(e.g. 20);
$w = 50;
$h = 100;

$nh = $h - ($h*$p)/100; 

$im = imagecreatetruecolor($w, $h);

$color1 = imagecolorallocate($im, 238,236,224);
$color2 = imagecolorallocate($im, 201,216,209);

//background
imagefilledrectangle($im, 0, 0, $w, $h, $color1);

//front
imagefilledrectangle($im, 0, $nh, $w, $h, $color2);

//output the image
imagepng($im);
imagedestroy($im);

?>

Ответы [ 5 ]

2 голосов
/ 15 мая 2010

Используя GD в php, вы можете использовать следующий фрагмент:

header("Content-type: image/png"); 

<?

$percent = $_GET['percent']; //(e.g. 0.2);
$height = 100;


$im = imagecreatetruecolor(55, $height);
$color1 = imagecolorallocate($im, 55,255,255);

$color2 = imagecolorallocate($im, 102,102,0);


imagefilledrectangle($im, 0, 0, 55, $height * $percent, $color1 );

imagefilledrectangle($im, 0, 5 + $height * $percent, 55, $height, $color2 );

//output the image
imagepng($im);
imagedestroy($im);

?>
1 голос
/ 15 мая 2010

В качестве альтернативы, вы рассматривали возможность использования чистого CSS?Вот небольшой код, который я составил.Это может быть более чистым, чем это, но вы можете понять:

<?php
$v = (int)$_GET['v'];
$font_size_offset = 9.25; // you'll have to play with this, to get it just right.
                          // alter it based on the size of the font you use for #label.
if($v < 0 || $v > 100) { $v = 0; }
?>

<style type="text/css">
#container {
        height: 400px;
        width: 100px;
        border: 1px solid black;
}

#fill_wrapper {
        width: 100%;
        position: relative;
        top: <?php echo ($v < 10) ? (100 - $font_size_offset - $v) : (100 - $v); ?>%;
}

#label {
        font-size: 32px;
        padding-left: 10px;
        color: black;
}

#fill {
        width: 100%;
        height: <?php echo $v; ?>%;
        background-color: red;
}

</style>

<div id="container">
        <div id="fill_wrapper">
                <?php if($v < 10) { echo '<span id="label">' . $v . '%</span>'; } ?>
                <div id="fill">
                        <?php if($v >= 10) { echo '<span id="label">' . $v . '%</span>'; } ?>
                </div>
        </div>
</div>

Стиль, как вы хотите ...

0 голосов
/ 03 августа 2012

Попробуйте использовать bootstrap, у них есть отличные плагины на основе CSS для такого рода вещей!

0 голосов
/ 15 мая 2010

Посмотрите на PHP GD. Это дает вам манипулирование изображением / создание.

http://php.net/manual/en/book.image.php

0 голосов
/ 15 мая 2010

Попробуйте встроенные библиотеки GD. http://ca3.php.net/manual/en/ref.image.php

http://ca3.php.net/manual/en/function.imagecreate.php

...