在php中创建动态状态栏图像

时间:2010-05-14 21:30:09

标签: php image gd

我是php中的图像创建新手。

如果更改参数值,则栏进度也应更改为传递值

我该如何实现类似的东西?

如果有人能说清楚,我将不胜感激

感谢帮助inadvance

更新:我自己想出来了,谢谢Greg以及所有建议...请测试此代码

<?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 个答案:

答案 0 :(得分:2)

在php中使用GD,您可以使用以下代码段:

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 :(得分:1)

或者,您是否考虑过使用纯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>

根据你的需要设计样式...

答案 2 :(得分:0)

答案 3 :(得分:0)

看看PHP GD。它为您提供图像处理/创建。

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

答案 4 :(得分:0)

尝试使用bootstrap,他们有很好的基于CSS的插件用于此类事情!