kostenloser Webspace werbefrei: lima-city


Bildbereiche umfärben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    h***********r

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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. ;)
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!