Ich habe ein sehr großes PNG-Bild, und ich schreibe eine Methode, um den Wert für eine Farbe an einem bestimmten (aber ändernden) Pixel dieses Bildes zu erhalten. Wenn ich das Bild erstellen mit:Wie effizient ist eine PHP-Bildressource?
$image = imagecreatefrompng('map.png');
Ist das gesamte Bild in den Speicher geladen (nicht ideal), oder ist es gerade gelesen, die Meta-Daten und die Vorbereitungen für weitere Anrufe, so dass, wenn ich rufe:
int imagecolorat (resource $image , int $x , int $y)
Wird die Datei nach dem richtigen Pixel suchen oder aus dem Speicher ziehen? Wenn ich versuche, diese Routine so zu optimieren, dass sie wiederholt aufgerufen wird, wäre es besser, die benötigten Bilddaten in ein roher Binär-Format zu konvertieren und die Dateisuche zu verwenden? Ich möchte vermeiden, die gesamte Datei, wenn möglich, immer wieder in den Speicher zu laden.
Das gesamte Bild wird mit 4 Bytes pro Pixel in den Speicher geladen; jede Manipulation erfordert normalerweise die doppelte Menge an Speicher –
@MarkBaker - Klingt wie eine Antwort, kein Kommentar :) Setzen Sie es unten und ich gebe Ihnen den Scheck. (Bummer BTW, es macht Sinn, weil bei der Komprimierung die genaue Position eines Pixels in einer Datei nicht bekannt wäre.) Sieht so aus, als müsste ich es in eine flache Datei umwandeln und fopen/fseek verwenden – BadPirate
Dort stand mal ein Die PHP-Erweiterung namens PHPqb (die Website scheint jetzt tot zu sein http://php-qb.net/) wurde für eine sehr speichereffiziente Bearbeitung von Bildern entwickelt, obwohl sie immer noch über [PECL] verfügbar ist (https: // pecl. php.net/package/qb) –