ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
133
133
EMPFEHLEN
-
Moin moin,
ich hab in einer Datenbank 10.000 Einträge stehen, welche jeweils einer x- und einer y-Koordinate zugeordnet sind. Nun möchte ich aus diesen Farben ein Bild erzeugen. Das Problem liegt darin, dass es ewig dauert dieses zu generieren. Habt ihr eine Idee, wie ich das ganze verkürzen kann, bzw. ob das Generieren mit Ruby oder Pyhton schneller gehen würde?!
Hier ein Codeauszug:
Code :1 2 3 4 5 6 7 8 9 10 11
$img = @imagecreatetruecolor(100,100); for ($y = 0; $y < 100; $y++) { for ($x = 0; $x < 100; $x++) { $res = mysql_query("SELECT color FROM griddata WHERE x LIKE \"$x\" AND y LIKE \"$y\" LIMIT 1"); $check = mysql_fetch_object($res); $farbe = $check->color; imagefilledrectangle($img, $x, $y, $x+1, $y+1, $farbe); } } header("Content-type: image/jpeg"); imagejpeg($img, "aktuell.jpg");
Vielen Dank!
m!crohomeLösungsvorschlag:
Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!
-
Probier’s mal mit der imagesetpixel()-Funktion. Außerdem solltest du nicht jeden Datensatz einzeln abfragen sondern beispielsweise zeilenweise.
Markus Wulftange
-
Hi Gumbo,
ersteinmal vielen Dank für deine Hilfe. Wie genau meinst du das mit den zeilenweisen Abfragen? Ich glaube, dass vorallem die Abfragen so lang dauern und weniger das Erstellen des neuen Bildes...Lösungsvorschlag:
Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!
-
Deswegen ja der Vorschlag, die Informationen der Grafik zeilenweise abzufragen (eine Pixelgrafik besteht ja auch aus Zeilen und Spalten).
Markus Wulftange
-
Ja, nur wie?
Außerdem habe ich noch folgendes Phänomen festgestellt. Die PHP Datei führe ich über die Kommandozeile auf meinem Hosteurope VServer aus. Komischerweise benötigt das erste Ausführen des Scripts immer wesentlich länger als die darauffolgenden. Hier im Beispiel mit 90x90 Pixeln:
1. Mal:
> php createpic.php
Ausführungsdauer: 108.922474146 Sekunden
2. Mal:
> php createpic.php
Ausführungsdauer: 5.92906403542 Sekunden
Woran kann das liegen?Lösungsvorschlag:
Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!
-
Vielleicht werden die Ergebnisse im Cache zwischengespeichert.
Probier mal Folgendes:PHP-Code:$img = imagecreatetruecolor(100,100);
for ($y = 0; $y < 100; $y++) {
$res = mysql_query("SELECT x, color FROM griddata WHERE y = $y ORDER BY x");
while ($pixel = mysql_fetch_assoc($res)) {
imagesetpixel($img, $pixel['x'], $y, $pixel['color']);
}
}
header("Content-type: image/jpeg");
imagejpeg($img, "aktuell.jpg");
Markus Wulftange
-
Hmm das scheint irgendwie nicht zu funktionieren. Das Script läuft und läuft aber kommt nicht zum Ende. Hab es mal mit 10x10 Pixeln versucht, aber auch da bekomme ich kein Ergebnis.
Code :1 2 3 4 5 6 7
$img = imagecreatetruecolor(10,10); for ($y = 0; $y < 10; $y++) { $res = mysql_query("SELECT x, color FROM griddata WHERE y LIKE \"$y\" ORDER BY x ASC"); while ($pixel = mysql_fetch_assoc($res)) { imagesetpixel($img, $pixel['x'], $y, $pixel['color']); } }Lösungsvorschlag:
Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!
-
Keiner mehr 'ne Idee
Lösungsvorschlag:
Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!
-
Versuche irgendwie die Fehlerquelle genauer zu lokalisieren.
Führe den Query doch erstmal aus und speichere alles in ein 2 Dimensionales Array.
Schau dir das Array mit var_dump(); an und check ob es geklappt hat.
Dann geh die Schleife ohne imagesetpixel durch und geb dir die Daten so aus, um sicherzustellen, dass das auch so klappt.
Wenn du dir dann sicher bist das alles so ist wie es sein sollte damm mach es mit imagesetpixel.
Führe das Script vllt auch mal bei dir Lokal aus und setze die max_execution time höher.
Wenn ich einen Fehler entdecke versuche ich immer erst einmal solch einen Weg um zu sehen was falsch ist.Meine Wenigkeit auf Deviantart
Ähnliche Themen
-
email mit bild per php generieren.
Von macropode im Forum PHPAntworten: 1Letzter Beitrag: 19.12.07, 19:07 -
Bild upload -> größe neu generieren
Von fischair im Forum PHPAntworten: 1Letzter Beitrag: 14.08.04, 12:56 -
Bild Generator - Bildkompositionen generieren
Von Pflaumi im Forum ASPAntworten: 1Letzter Beitrag: 20.09.03, 18:35 -
Bild mit dynamischen Daten generieren - aber wie?
Von Muffinmampfer im Forum PHPAntworten: 14Letzter Beitrag: 09.07.03, 14:58 -
bild generieren duch eingabemaske.
Von cRaZe im Forum PHPAntworten: 6Letzter Beitrag: 03.02.03, 13:25





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren