kostenloser Webspace werbefrei: lima-city


Zufallsbild Probleme

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    christenlieder

    christenlieder hat kostenlosen Webspace.

    Ich m?chte gerne von PHP ein Zufallsbild generieren lassen, nach dem Prinzip, dass einfach alle Pixel des Bildes nacheinander mit einer zuf?llig gew?hlten Farbe versehen werden. Das Script dazu sieht so aus:

    header("Content-Type: image/png");
    if (isset($_GET['wd'])) {
       $breit=$wd;
       $hoch=$wd;
    }else {
       $breit=50;
       $hoch=50;
    }
    $image = imagecreate($breit,$hoch);
    $x=1;
    while ($x<$breit) {
    	unset($y);
    	$y=1;
    	while ($y<$hoch) {
    		mt_srand((double)microtime() * 1000000);
    		$c1=mt_rand(1,256); $c2=mt_rand(1,256); $c3=mt_rand(1,256);
    		$farbe=imagecolorallocate($image,$c1,$c2,$c3);
    		imagesetpixel($image,$x,$y,$farbe);
    		$y++;
    		unset($c1); unset($c2); unset($c3); unset($farbe);
    	}
    	$x++;
    }
    imagepng($image);

    Aber das Bild, welches ich erst mal bei johny7 abgelegt habe, sieht so aus:
    http://johny7.milten.lima-city.de/files/phps/inf10/img.php

    Wenn ich einfach eine Tabelle mit Text ausgebe, dann geht das:
    if (isset($_GET['wd'])) {
       $breit=$wd;
       $hoch=$wd;
    }else {
       $breit=30;
       $hoch=30;
    }
    $image = imagecreate($breit,$hoch);
    $x=1;
    echo '<table>';
    while ($x<$breit) {
    	unset($y);
    	$y=1;
    	#echo "<tr>";
    	while ($y<$hoch) {
    		mt_srand((double)microtime() * 1000000);
    		$c1=mt_rand(1,256); $c2=mt_rand(1,256); $c3=mt_rand(1,256);
    		$farbe=imagecolorallocate($image,$c1,$c2,$c3);
    		imagesetpixel($image,$x,$y,$farbe);
    		echo "<td><div style=\"color:rgb(".$c1.",".$c2.",".$c3.");\">".$x.":".$y."</div></td>";
    		$y++;
    		unset($c1); unset($c2); unset($c3); unset($farbe);
    	}
    	$x++;
    	echo "</tr>";
    }
    echo "</table>";


    Kann mir einer erkl?ren, warum das so ist?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. duesentrieb73

    duesentrieb73 hat kostenlosen Webspace.

    Hmm.. Interessant.. ich hab das mal mit einer For schleife gemacht. komm aber auf das gleiche.

    $breit=100;
    $hoch=100;
    
    $image = imagecreate($breit,$hoch);
    
    for ($x=1; $x<=$breit; $x++) {    
         for($y=1; $y<=$hoch; $y++) {
            mt_srand((double)microtime() * 1000000);
            $c1=mt_rand(1,256); $c2=mt_rand(1,256); $c3=mt_rand(1,256);
            $farbe=imagecolorallocate($image,$c1,$c2,$c3);
            imagesetpixel($image,$x,$y,$farbe);       
        }
    }
    
    header("Content-Type: image/gif");
    imagegif($image);
  4. duesentrieb73

    duesentrieb73 hat kostenlosen Webspace.

    Ich musste mal ne?n bisschen rumtesten. Es scheint da eine einschr?nkung zu geben. Die bei 1024 liegt.

    Ein Bild von 32 * 32 wird noch richtig dargestellt. Doch danach nimmt er den letzten Wert und zeichnet alle Punkte damit. Ich hab die Funktion mal noch etwas abgewandelt. Und nur jeden zweiten Punkt darstellen lassen.

    In der php.ini konnt ich keine Limitierung finden.

    W?re aber mal interessant zu wissen wo man da was anders muss.
    W?sste im Moment nicht wo hier die Limitierung zu suchen ist.

    Also ich finde das ja reichlich interessant.
    4 * 256 sind ja auch 1024.
    Bin da noch mal anders ran gegangen. Und habe vorher ne?n Array mit Farben gef?llt. Zuerst 1 Dimension dann zwei Dimensionen. bei 1024 ist Schluss. Bzw. wenn er 255 erreicht hat. Das muss an der Variablen liegen die durch imagecolorallocate erzeugt wird liegen. Anders kann ich mir das jetzt nicht vorstellen.

    Den letzten Wert den er im Array oder in der Variablen findet, wird die Farbe f?r den Rest. Hier m?sste eine neue Variable dann ran.

    Man m?sste errechnen wieviele Bildpunkte im Bild vorkommen und diese durch 1024 teilen.

    M?sste man sich jetzt mehr mit besch?ftigen. Vielleicht gibt es ja auch schon andere neuere Funktionen.

    Vielleicht denk ich jetzt auch nur in die v?llig falsche Richtung.


    Beitrag ge?ndert am 31.01.2006 21:16 von duesentrieb73
  5. duesentrieb73

    duesentrieb73 hat kostenlosen Webspace.

    So sollte es klappen:

    header("Content-Type: image/GIF");
    
    $image = imagecreatetruecolor(100,100);
    $background = imagecolorallocate($image, 255, 255, 255);   //weiss
    
    $breit = $hoch = 10000;
    
    for ($x=1; $x<=$breit; $x++) {    
    
         for($y=1; $y<=$hoch; $y++) {
    
            mt_srand((double)microtime() * 1000000);
    
            $c1=mt_rand(1,256); $c2=mt_rand(1,256); $c3=mt_rand(1,256);
    
            $farbe=imagecolorallocate($image,$c1,$c2,$c3);
    
            imagesetpixel($image,$x,$y,$farbe);       
    
        }
    
    }
    
    imagegif($image);
    imagedestroy($image);


    Problem war imagecreate ist auf 256 bit limitiert.
    imagecreatetruecolor ist die L?sung.

    *freu*
  6. Das h?tte man auch in einen Post schreiben k?nnen. Es gibt eine Edit-Funktion.
  7. Autor dieses Themas

    christenlieder

    christenlieder hat kostenlosen Webspace.

    Vielen Dank f?r die Hilfe!!
  8. schaue unter www.php-free.de da findest du alles
    ich w?rde lieber mial von dort es neue herunterladen und dann wieder ernuet veruschen
  9. schaue unter www.php-free.de da findest du alles
    ich w?rde lieber mial von dort es neue herunterladen und dann wieder ernuet veruschen
  10. 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!