Ich habe ein Array von Pixeldaten in einem JSON-Objekt. Ich versuche, PHP zu verwenden, um die Pixeldaten zu einem GD-Bild neu zu zeichnen.PHP GD Zeichnung Pixeldaten von Array stoppt Mitte Schleife
Ich bin so etwas wie die folgenden mit (Hinweis zu Testzwecken habe ich den Index für die Schleife bei 5000, etwa auf halbem Weg in das Array gestartet.)
$im = imagecreate($w,$h);
$i=5000;
while($i < count($pixels)){
$item = $data[$i];
$rgb = $item['rgb'];
$pos = $item['pos'];
$col = imagecolorallocate($im, $rgb[0],$rgb[1],$rgb[2]);
imagesetpixel($im , $pos[0], $pos[1], $col);
$i++;
}
header("Content-Type: image/png");
imagepng($im);
Es ist mein Skript scheint nur Es wird so weit unten im Array gemacht, bevor es ausschneidet und das Bild fehlerfrei ausgibt.
Unten ist die Ausgabe, wenn ich den Array-Index über die Hälfte der Länge des Arrays starten. Ich bekomme einen sehr kleinen Teil des Bildes.
Ist das in dem Speicher durch? Oder eine Auszeit? Die Seite dauert nicht lange zu laden oder irgendetwas ...
Was passiert, wenn Sie 'error_reporting (E_ALL);' hinzufügen, aktivieren Sie die Fehlermeldung mit 'ini_set ('display_errors', true)' – KillerX
Sie scheinen bis zur Länge des $ pixels array zu loopen, aber Ihre Daten bekommen aus dem $ Daten-Array. Das erste, was ich suchen würde, ist die Länge dieser beiden Arrays. Allgemein gesagt, wenn ich solche Dinge debugge, kommentiere ich die Header- und Imagepng-Zeilen aus. Dann kann out Debugging-Nachrichten in der Schleife ausgeben, um genau zu sehen, was vor sich geht. –
Ok, für alle anderen mit diesem Problem. Hier ist die Lösung. Verwenden Sie imagecreatetruecolor anstelle von imagecreate. Es scheint, dass 'imagecolorallocate' bei der Verwendung von' imagecreate' nur bis zu 255 Farben zuweisen kann. Während "imagecreatetruecolor" keine solche Beschränkung hat. – ndmweb