Bildbereiche umfärben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
auslese
bild
check
code
datenbank
datum
denkfehler
farbe
fliegen
header
host
list
schein
server
sortieren
sortierung
test
url
vorbereiten
-
Hallöchen :)
Ich bin gerade dabei etwas zusammen zu bauen was was Werte aus einer Datenbank visuell wiedergibt.
Hierbei werte ich die Trefferquote eines Spielers je Körperteil aus. Die Werte dazu fliegen per rankme Plugin über CSGO rein.
Das ganze sieht in meinem Test Code so aus:
<?php define( 'WP_DEBUG', true ); ini_set('display_errors', 1); error_reporting(E_ALL); header("Content-type: image/png"); genpicture(); function genpicture(){ //Größe ändern list($width, $height) = getimagesize("bild.png"); $newwidth = $width * 0.25; $newheight = $height * 0.25; //Laden $img = imagecreatetruecolor($newwidth, $newheight); imagefill($img, 0, 0, 16777215); $source = imageCreatefrompng("bild.png"); //Skalieren imagecopyresized($img, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); setid($img, $newwidth); } function setid($img, $newwidth){ $sid = $_GET["id"]; $steamid = str_replace(array('"',"'",'<','>','=','+'), '',$sid); setcolor($img, $newwidth, $steamid); } //DDatenbank abfragen und Farben nach Wert festlegen function setcolor($img, $newwidth, $steamid){ if ($steamid ==''){die();} $host = 'localhost'; $user = 'CSGO-Server'; $db = 'CSGO-Server'; $pass = ''; $mysqli = new mysqli($host, $user, $pass, $db); $check = "SELECT head, chest, stomach, left_arm, right_arm, left_leg, right_leg FROM rankme WHERE steam='$steamid'"; $result = $mysqli->query($check); $values = mysqli_fetch_array($result); //Vorbereiten des Arrays $data = array(array()); //Füllen $data[0][0] = "head"; $data[0][1] = $values[0]; $data[1][0] = "chest"; $data[1][1] = $values[1]; $data[2][0] = "stomach"; $data[2][1] = $values[2]; $data[3][0] = "arml"; $data[3][1] = $values[3]; $data[4][0] = "armr"; $data[4][1] = $values[4]; $data[5][0] = "legl"; $data[5][1] = $values[5]; $data[6][0] = "legr"; $data[6][1] = $values[6]; //Sortieren sort($data, SORT_REGULAR); //Green 38400 if ($data[0][0] == "head"){$colorhead = 38400;} if ($data[0][0] == "arml"){$colorarml = 38400;} if ($data[0][0] == "armr"){$colorarmr = 38400;} if ($data[0][0] == "legl"){$colorlegl = 38400;} if ($data[0][0] == "legr"){$colorlegr = 38400;} if ($data[0][0] == "chest"){$colorchest = 38400;} if ($data[0][0] == "stomach"){$colorstomach = 38400;} //Lime 65280 if ($data[1][0] == "head"){$colorhead = 65280;} if ($data[1][0] == "arml"){$colorarml = 65280;} if ($data[1][0] == "armr"){$colorarmr = 65280;} if ($data[1][0] == "legl"){$colorlegl = 65280;} if ($data[1][0] == "legr"){$colorlegr = 65280;} if ($data[1][0] == "chest"){$colorchest = 65280;} if ($data[1][0] == "stomach"){$colorstomach = 65280;} //YellowLime 11847680 if ($data[2][0] == "head"){$colorhead = 11847680;} if ($data[2][0] == "arml"){$colorarml = 11847680;} if ($data[2][0] == "armr"){$colorarmr = 11847680;} if ($data[2][0] == "legl"){$colorlegl = 11847680;} if ($data[2][0] == "legr"){$colorlegr = 11847680;} if ($data[2][0] == "chest"){$colorchest= 11847680;} if ($data[2][0] == "stomach"){$colorstomach = 11847680;} //Yellow 16776960 if ($data[3][0] == "head"){$colorhead = 16776960;} if ($data[3][0] == "arml"){$colorarml = 16776960;} if ($data[3][0] == "armr"){$colorarmr = 16776960;} if ($data[3][0] == "legl"){$colorlegl = 16776960;} if ($data[3][0] == "legr"){$colorleglr = 16776960;} if ($data[3][0] == "chest"){$colorchest = 16776960;} if ($data[3][0] == "stomach"){$colorstomach = 16776960;} //Stufe5 Orange 16762880 if ($data[4][0] == "head"){$colorhead = 16762880;} if ($data[4][0] == "arml"){$colorarml = 16762880;} if ($data[4][0] == "armr"){$colorarmr = 16762880;} if ($data[4][0] == "legl"){$colorlegl = 16762880;} if ($data[4][0] == "legr"){$colorlegr = 16762880;} if ($data[4][0] == "chest"){$colorchest = 16762880;} if ($data[4][0] == "stomach"){$colorstomach = 16762880;} //Red 13107200 if ($data[5][0] == "head"){$colorhead = 13107200;} if ($data[5][0] == "arml"){$colorarml = 13107200;} if ($data[5][0] == "armr"){$colorarmr = 13107200;} if ($data[5][0] == "legl"){$colorlegl = 13107200;} if ($data[5][0] == "legr"){$colorlegr = 13107200;} if ($data[5][0] == "chest"){$colorchest = 13107200;} if ($data[5][0] == "stomach"){$colorstomach = 13107200;} //Red2 9830400 if ($data[6][0] == "head"){$colorhead = 9830400;} if ($data[6][0] == "arml"){$colorarml = 9830400;} if ($data[6][0] == "armr"){$colorarmr = 9830400;} if ($data[6][0] == "legl"){$colorlegl = 9830400;} if ($data[6][0] == "legr"){$colorlegr = 9830400;} if ($data[6][0] == "chest"){$colorchest = 9830400;} if ($data[6][0] == "stomach"){$colorstomach = 9830400;} //Umfärben :D colorhead($img, $newwidth, $colorhead, $colorarmr, $colorarml, $colorchest, $colorstomach, $colorlegl, $colorlegr); } //Kopf function colorhead($img, $newwidth, $colorhead, $colorarmr, $colorarml, $colorchest, $colorstomach, $colorlegl, $colorlegr){ $x = 0; $y = 0; $xmax = $newwidth; $ymax = 45; $newcolor = $colorhead; while ($y <= $ymax){ if ($x != $xmax){ if (imagecolorat ($img, $x, $y) !== 16777215){ imagesetpixel($img, $x, $y, $newcolor); $x = $x + 1; } else {$x = $x + 1;} } else { $y = $y + 1; $x = 0; } } colorleftarm($img, $newwidth, $colorarmr, $colorarml, $colorchest, $colorstomach, $colorlegl, $colorlegr); } //ArmL function colorleftarm($img, $newwidth, $colorarmr, $colorarml, $colorchest, $colorstomach, $colorlegl, $colorlegr){ $x = 0; $y = 55; $xmax = 50; $ymax = 186; $newcolor = $colorarml; while ($y <= $ymax){ if ($x != $xmax){ if (imagecolorat ($img, $x, $y) !== 16777215){ imagesetpixel($img, $x, $y, $newcolor); $x = $x + 1; } else {$x = $x + 1;} } else { $y = $y + 1; $x = 0; } } colorrightarm($img, $newwidth, $colorarmr, $colorchest, $colorstomach, $colorlegl, $colorlegr); } //ArmR function colorrightarm($img, $newwidth, $colorarmr, $colorchest, $colorstomach, $colorlegl, $colorlegr){ $x = 109; $defaultx = $x; $y = 55; $xmax = $newwidth; $ymax = 186; $newcolor = $colorarmr; while ($y <= $ymax){ if ($x != $xmax){ if (imagecolorat ($img, $x, $y) !== 16777215){ imagesetpixel($img, $x, $y, $newcolor); $x = $x + 1; } else {$x = $x + 1;} } else { $y = $y + 1; $x = $defaultx; } } colorchest($img, $newwidth, $colorchest, $colorstomach, $colorlegl, $colorlegr); } //Chest function colorchest($img, $newwidth, $colorchest, $colorstomach, $colorlegl, $colorlegr){ $x = 50; $defaultx = $x; $y = 55; $xmax = 109; $ymax = 130; $newcolor = $colorchest; while ($y <= $ymax){ if ($x != $xmax){ if (imagecolorat ($img, $x, $y) !== 16777215){ imagesetpixel($img, $x, $y, $newcolor); $x = $x + 1; } else {$x = $x + 1;} } else { $y = $y + 1; $x = $defaultx; } } colorstomach($img, $newwidth, $colorstomach, $colorlegl, $colorlegr); } //Stomach function colorstomach($img, $newwidth, $colorstomach, $colorlegl, $colorlegr){ $x = 50; $defaultx = $x; $y = 130; $xmax = 109; $ymax = 193; $newcolor = $colorstomach; while ($y <= $ymax){ if ($x != $xmax){ if (imagecolorat ($img, $x, $y) !== 16777215){ imagesetpixel($img, $x, $y, $newcolor); $x = $x + 1; } else {$x = $x + 1;} } else { $y = $y + 1; $x = $defaultx; } } colorleftleg($img, $newwidth, $colorlegl, $colorlegr); } //LegL function colorleftleg($img, $newwidth, $colorlegl, $colorlegr){ $x = 0; $defaultx = $x; $y = 193; $xmax = 80; $ymax = 319; $newcolor = $colorlegl; while ($y <= $ymax){ if ($x != $xmax){ if (imagecolorat ($img, $x, $y) !== 16777215){ imagesetpixel($img, $x, $y, $newcolor); $x = $x + 1; } else {$x = $x + 1;} } else { $y = $y + 1; $x = $defaultx; } } colorrightleg($img, $newwidth, $colorlegr); } //LegR function colorrightleg($img, $newwidth, $colorlegr){ $x = 80; $defaultx = $x; $y = 193; $xmax = 160; $ymax = 319; $newcolor = $colorlegr; while ($y <= $ymax){ if ($x != $xmax){ if (imagecolorat ($img, $x, $y) !== 16777215){ imagesetpixel($img, $x, $y, $newcolor); $x = $x + 1; } else {$x = $x + 1;} } else { $y = $y + 1; $x = $defaultx; } } displayresult($img); } //Ausgabe des Bildes function displayresult($img){ imagePng($img); }
Irgendwo scheine ich aber noch einen Denkfehler drinnen zu haben. Egal welche Werte an der Stelle in der Datenbank stehen, oder ob gar kein Eintrag dazu existiert, die Farben sind immer gleich angeordnet, ädern sich also nicht.
Es scheint also irgendwo Zwischen Datenbank auslesen, Daten sortieren und Sortierung erkennen ein Problem zu geben.
Evtl sehrt ihr da etwas was ich nicht sehe
Falls wer sehen will was ich meine, oder was ich nicht meine, hier einmal für mich mit Testwerten
https://cloud-inc.eu/test.php?id=STEAM_1:0:200034682 --> Werte dazu http://prntscr.com/hdi44b
und einmal für nicht existierende Benutzer
https://cloud-inc.eu/test.php?id=STEAM_1:0:0000000 --> Wert müsste alles 0 oder leer sein
Beitrag zuletzt geändert: 21.11.2017 22:23:33 von horstexplorer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Dein Code ist leider wirklich schlecht lesbar und recht wirr.
Z.B. was die Abfrage aus SQL und die Array-Sortierung angeht. sort() ist auch gar nicht für multidimensionale Sortierungen gedacht.
Prinzipiell: Warum nimmst du da überhaupt ein PNG? Das Figürchen als SVG mit den entsprechenden Bereichen erstellen und dann je nach Wert entsprechend einfärben. Dann brauchst du auch nicht umständlich mit PHP am Bild rum pfuschen. ;) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage