Bildinformationen überprüfen

port29

deus.Server
Hallo,

ich würde gerne hochgeladene Bilder automatisch auf einige Merkmale überprüfen. Ein Merkmal ist die Helligkeit eines Bildes. Deshalb die Frage: Wie bekomme ich die Helligkeit (oder die Durschschnittsfarbe) eines Bildes?
 
Will nicht gerade behaupten das es unmöglich wäre, aber eine höhere Serverbelastung könnte das Resulat werden.
 
PHP ist primär nicht gerade eine Grafikanwendung. Deshalb hat Cix88 mit seine Aussage auch nicht ganz unrecht. Doch solange die Überprüfung nur einmalig nach dem Hochladen der Grafik vorgenommen wird, sollte es kein Problem darstellen.
Was den eigentlichen Algorithmus zur Ermittlung der Durchschnittshelligkeit/-farbe angeht, wird dir jedoch wohl nichts anderes übrig bleiben, als sie anhand jedes einzelnen Pixels (siehe imagecolorat()-Funktion) selbst zu errechnen. Möglicherweise gibt es aber auch unter den Grafik-Funktionen PHPs auch eine geeignetere Funktion.
 
> Wie bekomme ich die Helligkeit (oder die Durschschnittsfarbe) eines Bildes?

Najaaaa, fertige Funktionen gibt es nur, um einzelne Pixel zu ermitteln.

Man stelle sich innerhalb vom Bild ein Raster vor (was weis ich 10x10px) und ermittel die Farbinformationen.
Aus diesen Informationen könnte man dann die Durchschnittsfarbe ermitteln, wobei ich diese aber nicht für optimal finde.
Besser wäre, wenn man wirklich sich auf die Helligkeit beschränkt, was sich auch daraus ermitteln lässt.
 
CIX88 hat gesagt.:
> Wie bekomme ich die Helligkeit (oder die Durschschnittsfarbe) eines Bildes?

Najaaaa, fertige Funktionen gibt es nur, um einzelne Pixel zu ermitteln.

Man stelle sich innerhalb vom Bild ein Raster vor (was weis ich 10x10px) und ermittel die Farbinformationen.
Aus diesen Informationen könnte man dann die Durchschnittsfarbe ermitteln, wobei ich diese aber nicht für optimal finde.
Besser wäre, wenn man wirklich sich auf die Helligkeit beschränkt, was sich auch daraus ermitteln lässt.

Ein Kollege von mir hat das mal so gelöst, dass er eine zu 20% sichtbare weiße Ebene per Imagecopy solange drübergelegt hat bis es wirklich nur noch weiß war. Für die Anzahl der nötigen Schritte gabs dann eine Umrechnung in die ungefähre Helligkeit. Ich schau mal, dass ich da was von ihm bekomme.
 
Wobei mir diese Methode nicht unbedingt zusagen würde.
Meist ist es ja so, dass man sich auf einzelne Pixel verlässt.

Besser wäre, wenn man ein Radius um den Pixel zusätzlich abtastet (Prinzig der 3x3 Matrix).
Aber dann wird das auslesen von den Informationen zur Qual, was ich oben bereits schon erwähnte.
Möglich ist alles, auch mit der GDlib, aber die Serverbelastung setzt uns dort eine Grenze.
 
Zurück