Avatar billede ajh87 Nybegynder
06. marts 2005 - 17:37 Der er 9 kommentarer og
2 løsninger

PHP fil der genererer et PNG billede - En progressbar

Jeg skal lave en lille progressbar... Fx sådan en her:
http://www.udvikleren.dk/bar.php?r=59.72&m=100

Hvis man lægger mærke til parametrene så tager den to.. hehe
Et der definerer hvor meget der er "taget" af progressbaren og en der definerer hvor meget progressbaren strækker sig over fx 100 (som i 100 %)

Det ovenstående link er til en PHP fil som sagt og den retunerer et PNG billede, altså ingen PHP kode bliver retuneret...

Hvordan kan dette laves?
Jeg kunne ville meget gerne have nogle eksempler!

Håber på i vil hjælpe mig :o)

Mvh
Anders
Avatar billede bromer Nybegynder
06. marts 2005 - 18:33 #1
Du kan lave et lille genereringsscript gen.php eller noget i den stil der kunne ligne:

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

// Funktioner til at lave billedet
?>

Hvor du så kan lave en <img src="gen.php"/>. Du kan finde billede-manipuleringsfunktioner her:

http://www.php.net/manual/en/ref.image.php
Avatar billede ajh87 Nybegynder
06. marts 2005 - 18:44 #2
Jeg har tilsyneladende et problem med at finde rundt i PHP's dokumantation :o)
takker for linket...
Avatar billede ajh87 Nybegynder
06. marts 2005 - 18:45 #3
kan du sige mig om der er funktioner til at lave tekst?
Avatar billede detox Nybegynder
06. marts 2005 - 18:46 #4
Avatar billede bromer Nybegynder
06. marts 2005 - 18:53 #5
Der er funktioner til det meste. Generlet er flowet i systemet at du opretter et billede, tilføjer egenskaber til det og outputter det til sidst. Med hensyn til at skrive tekst kan du se lidt på:

http://www.php.net/manual/en/function.imagettftext.php
http://www.php.net/manual/en/function.imagepstext.php
http://www.php.net/manual/en/function.imagestring.php

Jeg tror det er den sidste du gerne vil have fat i.
Avatar billede ajh87 Nybegynder
06. marts 2005 - 20:25 #6
Til dem der kunne tænke sig koden jeg er kommet frem til er den her under...
Jeg har justeret skriften så den står PRÆCIST i midten... ikke in pixels afvigelse...
Parametrene er:
value
width

hvis value ikke er angivet vil den blive sat til 0 og hvis width ikke er angivet vil den blive sat til 100...

koden
--------------------------------------------------------------------------------
<?php       
    if(isset($HTTP_GET_VARS["value"]) == false)
    {
        $value = 0;
    }
    else
    {
        $value = $HTTP_GET_VARS["value"];
    }
   
    // Picture Size
    if(isset($HTTP_GET_VARS["width"]) == false)
    {
        $width = 100;
    }
    else
    {
        $width = $HTTP_GET_VARS["width"];
    }
    $height = 12;
   
    // Create Picture
    $img = imagecreatetruecolor($width, $height);
   
    // Calculations
    $pixel_per_value = ($width-2)/100;
    $fillwidth = $pixel_per_value * $value;
   
    // Colors
    $backcolor = ImageColorAllocate($img, 255, 255, 255);                    // White
    $progcolor = ImageColorAllocate($img, 200, 220, 255);                    // Light Blue
    $bordcolor = ImageColorAllocate($img, 128, 128, 128);                    // Dark Grey
    $textcolor = ImageColorAllocate($img, 0, 0, 0);                            // Black
   
    // Drawing
    imagefill($img, 0, 0, $backcolor);                                        // Fill Background
   
    imageline($img, 0, 0, $width, 0, $bordcolor);                            // Top Border
    imageline($img, 0, 0, 0, $height-1, $bordcolor);                        // Left Border
    imageline($img,1, $height-1, $width, $height-1, $bordcolor);            // Bottom Border
    imageline($img, $width-1, $height-1, $width-1,1, $bordcolor);            // Right Border
   
    imagefilledrectangle($img, 1, 1, $fillwidth, ($height-2), $progcolor);    // Fill Rectangle
   
    // Text
    if($value == 0)
    {
        imagestring($img, 1, 40, 2, "0.00", $textcolor);
    }
    else
    {   
        imagestring($img, 1, 38, 2, $value, $textcolor);
    }
   
    // Display Picture
    header("Content-type: image/png");                                        // Browser Header
    imagepng($img);                                                            // Output Picture
    imagedestroy($img);                                                        // Delete Picture
?>
Avatar billede ajh87 Nybegynder
06. marts 2005 - 20:26 #7
farverne er præcist de samme som på det link jeg angav i spørgsmålet...
måske ikke lige så pæne men nu bruget jeg bare dem som eksempel...

Mvh
Anders
Avatar billede ajh87 Nybegynder
06. marts 2005 - 20:27 #8
takker for hjælpen begge to :o)
Avatar billede bromer Nybegynder
06. marts 2005 - 20:27 #9
super indstilling du har med hensyn til at paste løsningen... kudos
Avatar billede ajh87 Nybegynder
07. marts 2005 - 20:20 #10
takker :o)
mente bare at andre måske kunne bruge det... ville jo være smart hvis man bare kunne søge efter sit spørgsmål på exp.dk under besvaret spørgsmål ;o) hehe

Mvh
Anders
Avatar billede ajh87 Nybegynder
04. april 2005 - 19:56 #11
lige en sen addition her:
for det bruge dette script skal man bare give nogle parametre og include det således:
<img src="bar.php?value=54.3&width=100">
for eksempel...

height og width bliver automatisk sat til width=100 og height=12 hvis en de hver i sær ikke er sat...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester