Der Martin: Bild auslesen

Beitrag lesen

Hi,

$imageFilename = "3x3.png";

$image = imagecreatefrompng ( $imageFilename );

$x = floatval( 0 );
$y = floatval( 0 );

  
was bringt dich auf die Idee, für die x- und y-Koordinaten hier float-Werte zu erzwingen? In meiner Welt sind die Pixelkoordinaten von Rastergrafiken ganzzahlig.  
  

> ~~~php

$rgb = imagecolorat ( $image , $x , $y );  

> $colors = imagecolorsforindex ( $image , $rgb );

Du setzt voraus, dass es sich um ein palettenindiziertes Bild handelt? - Denn bei einem Truecolor-Bild (JPEG oder 24bit-PNG) hättest du allein mit imagecolorat() schon die tatsächliche Farbe.

Jedoch möchte ich die RGB-Werte aller im Bild vorhandenen Pixel ermitteln und in einem Array sammeln. Dies habe ich mit Hilfe einer for-Schleife versucht, jedoch bin ich nicht zu einem brauchbaren Ergebnis gekommen.

Das ist nicht verwunderlich, denn da du Pixelzeilen und -spalten hast, brauchst du zwei ineinander verschachtelte Schleifen.

Es müsste die Bilddatei zeilenweise (von links nach rechts und von oben nach unten) ausgelesen werden, wobei die Breite und Höhe jeweils minus 1 Pixel die Schleife beenden sollten.

Genau. Das Prinzip scheint dir klar zu sein. Wo also bist du gescheitert? Wie sah dein Ansatz aus?

Unabhängig von der Theorie: Wenn dein Bild mehr als nur Briefmarkengröße hat, wird das Script sehr viel Zeit brauchen. Zeit, die es möglicherweise nicht bekommt, weil bei den meisten Hostern die Ausführungszeit begrenzt ist. Und ja, 30 Sekunden kommen bei Pixel-für-Pixel-Operationen schnell zusammen.

So long,
 Martin

--
Ich wollt', ich wär ein Teppich.
Dann könnte ich morgens liegenbleiben.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(