Avatar billede wickedd Juniormester
11. december 2005 - 07:50 Der er 23 kommentarer og
1 løsning

Mangler hjælp til GD library

Er der nogen der lige kan lave det her for mig. Nu har jeg prøvet i et par dage, og det giver absolut ingen mening. Tror jeg skal ha' øvet mig noget mere, men det er ret vigtigt det bliver lavet færdigt inden mandag nemlig.

Som et eksempel har jeg et billede, jpg 600x500, samt 2 numre:
$nummer1 = "205"; // Blå
$nummer2 = "16"; // Rød

Hvordan kan jeg få de 2 numre smidt ind i billedet så det kommer til at ligne det her? :
http://img207.imageshack.us/img207/4384/untitled20rs.gif

Vi kunne sige at 205=205 pixels, 16=16 pixels osv. bare for at holde det simpelt.

Mange mange tak på forhånd.
Avatar billede jakobdo Ekspert
11. december 2005 - 09:01 #1
Jeg arbejder på en løsning her:
<?php
//http://exp.dk/spm/671214
$pic = "671214.jpg";

function LoadJpeg($imgname)
{
    $im = @imagecreatefromjpeg($imgname); /* Attempt to open */
    if (!$im)
    { /* See if it failed */
        $im  = imagecreate(150, 30); /* Create a blank image */
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);
        imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
        /* Output an errmsg */
        imagestring($im, 1, 5, 5, "Error loading $imgname", $tc);
    }
    return $im;
}

header("Content-type: image/jpeg");
list($width, $height, $type, $attr) = getimagesize($pic);
$im = @imagecreate($width, $height) or die("Cannot Initialize new GD image stream");
$im = LoadJpeg($pic);
$red_color  = imagecolorallocate($im, 255,  0,  0);
$blue_color = imagecolorallocate($im,  0,  0, 255);
imagefilledrectangle ($im, 5, 5, 25, 105, $blue_color);
imagefilledrectangle ($im, 30, 5, 50, 105, $red_color);
//imagestring($im, 1, 5, 5,  "A Simple Text String", $blue_color);
imagejpeg($im);
imagedestroy($im);

?>

Jeg ved ikke om du selv kan gøre den færdig?
Ellers så arbejder jeg lige lidt videre!
Avatar billede jakobdo Ekspert
11. december 2005 - 09:02 #2
Du kan forresten følge med her: http://www.codebreaker.dk/exp/671214.php
Avatar billede wickedd Juniormester
11. december 2005 - 09:10 #3
Jeg følger lige med mens jeg lurer lidt på koden :)
Avatar billede jakobdo Ekspert
11. december 2005 - 09:10 #4
Nyeste version: http://www.codebreaker.dk/exp/671214.php?red=500&blue=20
Skal højden være en procent af billedet?
Avatar billede jakobdo Ekspert
11. december 2005 - 09:11 #5
Og koden:

<?php
//http://exp.dk/spm/671214
$pic = "671214.jpg";

function LoadJpeg($imgname)
{
    $im = @imagecreatefromjpeg($imgname); /* Attempt to open */
    if (!$im)
    {
        /* See if it failed */
        $im  = imagecreate(150, 30); /* Create a blank image */
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);
        imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
        /* Output an errmsg */
        imagestring($im, 1, 5, 5, "Error loading $imgname", $tc);
    }
    return $im;
}
$redHeight  = (is_numeric($_GET['red']))?$_GET['red']:0;
$blueHeight = (is_numeric($_GET['blue']))?$_GET['blue']:0;
header("Content-type: image/jpeg");
list($width, $height, $type, $attr) = getimagesize($pic);
$im = @imagecreate($width, $height) or die("Cannot Initialize new GD image stream");
$im = LoadJpeg($pic);

$lowerRightCornerX = $width - 5;
$lowerRightCornerY = $height - 5;
$barWidth = 20;

if($redHeight>0)
{
    $lowerRightCornerX -= $barWidth;
    $red_color  = imagecolorallocate($im, 255,  0,  0);
    imagefilledrectangle ($im, $lowerRightCornerX, $lowerRightCornerY-$redHeight, $lowerRightCornerX+$barWidth, $lowerRightCornerY, $red_color);
}

if($blueHeight>0)
{
    $lowerRightCornerX -= $barWidth;
    $blue_color  = imagecolorallocate($im,  0,  0, 255);
    imagefilledrectangle ($im, $lowerRightCornerX, $lowerRightCornerY-$blueHeight, $lowerRightCornerX+$barWidth, $lowerRightCornerY, $blue_color);
}

imagejpeg($im);
imagedestroy($im);

?>
Avatar billede wickedd Juniormester
11. december 2005 - 09:14 #6
Ja det er nok bedste hvis den er det tror jeg.
Går jo ikke at hvis den røde er 5000 og den blå 1000 og de så er lige store :)
Avatar billede wickedd Juniormester
11. december 2005 - 09:14 #7
I højden altså
Avatar billede jakobdo Ekspert
11. december 2005 - 09:17 #8
Så tror jeg sgu den var der: http://www.codebreaker.dk/exp/671214.php?red=75&blue=40
Red og Blue er nu procent satser! (skal være mellem 0-100 - ved 0 vises ingen bjælke)

Og koden er her:

<?php
//http://exp.dk/spm/671214
$pic = "671214.jpg";

function LoadJpeg($imgname)
{
    $im = @imagecreatefromjpeg($imgname); /* Attempt to open */
    if (!$im)
    {
        /* See if it failed */
        $im  = imagecreate(150, 30); /* Create a blank image */
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);
        imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
        /* Output an errmsg */
        imagestring($im, 1, 5, 5, "Error loading $imgname", $tc);
    }
    return $im;
}
$redHeight  = (is_numeric($_GET['red'])  && $_GET['red']  > 0 && $_GET['red']  <= 100)?$_GET['red'] :0;
$blueHeight  = (is_numeric($_GET['blue']) && $_GET['blue'] > 0 && $_GET['blue'] <= 100)?$_GET['blue']:0;

header("Content-type: image/jpeg");
list($width, $height, $type, $attr) = getimagesize($pic);
$im = @imagecreate($width, $height) or die("Cannot Initialize new GD image stream");
$im = LoadJpeg($pic);

$lowerRightCornerX = $width - 5;
$lowerRightCornerY = $height - 5;
$barWidth = 15;
$maxHeightPixel = ($height - 10)/100;

if($redHeight>0)
{
    $lowerRightCornerX -= $barWidth;
    $redHeight *= $maxHeightPixel;
    $red_color  = imagecolorallocate($im, 255,  0,  0);
    imagefilledrectangle ($im, $lowerRightCornerX, $lowerRightCornerY-$redHeight, $lowerRightCornerX+$barWidth, $lowerRightCornerY, $red_color);
}

if($blueHeight>0)
{
    $lowerRightCornerX -= $barWidth;
    $blueHeight *= $maxHeightPixel;
    $blue_color  = imagecolorallocate($im,  0,  0, 255);
    imagefilledrectangle ($im, $lowerRightCornerX, $lowerRightCornerY-$blueHeight, $lowerRightCornerX+$barWidth, $lowerRightCornerY, $blue_color);
}

imagejpeg($im);
imagedestroy($im);

?>
Avatar billede wickedd Juniormester
11. december 2005 - 09:19 #9
OK, og hvis jeg så syns at procenter ikke dur mere, så fjerner jeg bare /100  ?
Avatar billede jakobdo Ekspert
11. december 2005 - 09:21 #10
Ikke helt!
Hvad ville du hellere have da?
Hvis den skulle være som den var i starten, kan du rette:
Slet: $maxHeightPixel = ($height - 10)/100;
Slet: $redHeight *= $maxHeightPixel;
Slet: $blueHeight *= $maxHeightPixel;

Så blev den som før!
Avatar billede wickedd Juniormester
11. december 2005 - 09:22 #11
Super! Jeg bliver jo lige nød til at tjekke hvad der er bedst at bruge :)
Jeg siger mange tak for hjælpen, så kan du jo evt. lige smide et svar også.
Avatar billede jakobdo Ekspert
11. december 2005 - 09:24 #12
Svar!
Avatar billede jakobdo Ekspert
11. december 2005 - 09:25 #13
Ved ikke at bruge en procent sats, kan du jo løbe ind i problemet med at billedet er:
75*50 pixel!
Hvordan vil du tegne en 100pixels bar på den? :o)
Avatar billede wickedd Juniormester
11. december 2005 - 09:29 #14
Fordi tallet allerede er over 100. Syns ikke rigtig jeg kan se hvor man skal smide regnestykket ind henne. Men det det skal jeg nok finde ud af på et tidspunkt.

Takker! :)
Avatar billede jakobdo Ekspert
11. december 2005 - 09:31 #15
Jeg takker for point!
Hvad mener du med: Fordi tallet allerede er over 100?
Avatar billede wickedd Juniormester
11. december 2005 - 09:33 #16
$nummer1 = "205"; // Blå
$nummer2 = "16"; // Rød

Men jeg skal bare lige lure koden af et stykke tid, så finder jeg det nok.
Avatar billede jakobdo Ekspert
11. december 2005 - 09:35 #17
Ok, ellers må du spørge igen!
Avatar billede wickedd Juniormester
11. december 2005 - 10:47 #18
Sådan. Så skal der smides nyt grafik på og så ellers igang med hovedregning :)
http://img229.imageshack.us/img229/5333/untitled17ge.jpg
Avatar billede jakobdo Ekspert
11. december 2005 - 10:48 #19
Hehe, nice!
Hvad skal du bruge det til om jeg må spørge?
Avatar billede wickedd Juniormester
11. december 2005 - 11:10 #20
Skal bruges sammen med et andet script der tjekker om 5 servere er oppe at køre.
Så istedet for bare at skrive hvor mange gange de er blevet tjekket, om de er online eller offline, så får man smidt det her i bøtten også.

Lige for at gøre "helheds" indtrykket helt perfekt :)
Avatar billede wickedd Juniormester
11. december 2005 - 11:10 #21
Blå er online, rød er offline selvfølgelig :0
Avatar billede jakobdo Ekspert
11. december 2005 - 11:13 #22
Det siger jo sig selv! :o)
Avatar billede wickedd Juniormester
14. december 2005 - 19:17 #23
Jeg valgte at lave blå om til grøn samt at lægge dem ned istedet :)
Her er det færdige resultat: http://img477.imageshack.us/img477/7192/woot8ba.gif
Avatar billede jakobdo Ekspert
14. december 2005 - 19:23 #24
Cool nok!
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