Mit php jpg oder png untersuchen möglich?
Pete
- php
- web
0 Der Martin0 Pete0 MudGuard0 klawischnigg
Hallo,
kann man mit php (GD, Imagick) oder überhaupt mit Webtechniken ein Image auf Pixelfarben an bestimmten Stellen untersuchen oder ist das illusorisch?
Pete
Hallo Pete,
kann man mit php (GD, Imagick) oder überhaupt mit Webtechniken ein Image auf Pixelfarben an bestimmten Stellen untersuchen oder ist das illusorisch?
das ist gar kein Hexenwerk. Lade das Bild mit imagecreatefromjpeg() oder imagecreatefrompng(), und bestimme dann die Farbe des gesuchten Pixels mit imagecolorat().
Den Typ der Grafikressource (JPEG, PNG, GIF, whatever) kannst du vorher mit getimagesize() abfragen.
Möge der Kaffee gut und der Montag kurz sein
Martin
Hallo Martin,
das ist gar kein Hexenwerk. Lade das Bild mit imagecreatefromjpeg() oder imagecreatefrompng(), und bestimme dann die Farbe des gesuchten Pixels mit imagecolorat().
Das klappt soweit sehr gut, danke für den Tip.
Das nächste Problem ist, dass ich durch das "Antialiasieren" innerhalb der JPGs immer so ungefähr dieselben Farben habe, nie aber ganz genau dieselben Farben. Im Grunde muß nur zwischen rot und grün unterschieden werden, aber ich finde grad keinen Anhaltspunkt, wie ich ganz sicher unterscheiden kann, ob es ein Rotton oder Grünton ist.
Hast Du da auch eine Idee?
Pete
Hi,
und bestimme dann die Farbe des gesuchten Pixels mit imagecolorat().
Das klappt soweit sehr gut, danke für den Tip.
Das nächste Problem ist, dass ich durch das "Antialiasieren" innerhalb der JPGs immer so ungefähr dieselben Farben habe, nie aber ganz genau dieselben Farben. Im Grunde muß nur zwischen rot und grün unterschieden werden, aber ich finde grad keinen Anhaltspunkt, wie ich ganz sicher unterscheiden kann, ob es ein Rotton oder Grünton ist.
Wenn der R-Anteil höher als der G-Anteil ist, und ggf. noch beide höher als der B-Anteil?
cu,
Andreas a/k/a MudGuard
Hi,
Wenn der R-Anteil höher als der G-Anteil ist, und ggf. noch beide höher als der B-Anteil?
Na das scheint mir so nicht ganz zu passen, weil dieses Antialiassing wirklich schräge Farbtöne hervorbrimngt. Aber so in etwas gehts dann doch. Man kann die 3 Farbbereiche zahlenmäßig so eingrenzen, dass man sich relativ sicher sein kann, ein gutes Ergebnis zu erzielen.
Pete
Hallo,
Wenn der R-Anteil höher als der G-Anteil ist, und ggf. noch beide höher als der B-Anteil?
Na das scheint mir so nicht ganz zu passen, weil dieses Antialiassing wirklich schräge Farbtöne hervorbrimngt.
ich würde vielleicht auch versuchen, nicht nur ein Pixel zu bewerten, sondern den Mittelwert des gesuchten Pixels und seiner 8 Nachbarn (Randbereiche ausgenommen) - eventuell mit doppelter Gewichtung des Zentralpixels.
Möge der Kaffee gut und der Montag kurz sein
Martin
Hi Martin,
ich würde vielleicht auch versuchen, nicht nur ein Pixel zu bewerten, sondern den Mittelwert des gesuchten Pixels und seiner 8 Nachbarn (Randbereiche ausgenommen) - eventuell mit doppelter Gewichtung des Zentralpixels.
Ja, genau das macht man auch, wenn man die Farbwertgrenzen setzt.
Ich fahr jetzt gerade mit
if($red > 160 && $green < 50) {
$rot++;
} elseif($red < 150 && $green > 120) {
$gruen++;
...
Das passt bisher ganz gut.
Das Problem ist ja, dass das eigentlich bereits komprimierte jpg nochmals komprimiert abgelegt wird, sodass der antialisierte farbbereich wirkliche Stilblüten hervorbringt.
Dennoch:
Ich bin total dankbar für Deine geniale Idee, wie man das mittels Webtechnik lösen kann und es funktioniert bisher einwandfrei. 👍
Pete
@@MudGuard
Im Grunde muß nur zwischen rot und grün unterschieden werden, aber ich finde grad keinen Anhaltspunkt, wie ich ganz sicher unterscheiden kann, ob es ein Rotton oder Grünton ist.
Wenn der R-Anteil höher als der G-Anteil ist, und ggf. noch beide höher als der B-Anteil?
Oder gar nicht weiter mit RGB rumhantieren, sondern in HSL o.ä. umrechnen? Dann muss man nur noch den Farbwert H betrachten (evtl. erst ab einem gewissen Mindestwert für die Sättigung S).
😷 LLAP
Hi there,
Das nächste Problem ist, dass ich durch das "Antialiasieren" innerhalb der JPGs immer so ungefähr dieselben Farben habe, nie aber ganz genau dieselben Farben. Im Grunde muß nur zwischen rot und grün unterschieden werden, aber ich finde grad keinen Anhaltspunkt, wie ich ganz sicher unterscheiden kann, ob es ein Rotton oder Grünton ist.
Die Frage ist, was für eine Art von Bild Du da untersuchst und wie weit Du da Einfluß auf den Dateityp hast. Bei Photos und besonders bei Jpegs hast Du natürlich immer das Problem der farblichen Randschärfe. Bei Graphiken als Gif oder PNG kann man dieses Problem leichter umgehen. Vielleicht hilft es ja schon, wenn Du das Bild vorher in ein solches Format konvertieren kannst und dabei den Kontrast erhöhst.
Wenn das alles nicht möglich ist, dann ist vermutlich der von MudGuard vorgeschlagene Weg der sinnvollste...(edit: wobei es bei einem Jpeg vermutlich auch auf die Stärke der Kompression ankommt, ob das überhaupt funktioniert. Durch die Kompressions-Artfakte können schon mal die lustigsten Farben auftauchen)