| |
bild farbwerte analysieren via php |
|
 |
 |
 |
| |
hallo zusammen,
ist es machbar die farbanteile/farbwerte eines upgeloadeten bildes via php zu analysieren? img2ascii ist ja schonmal eine aehnliche richtung, oder taeusche ich mich da?
tschuess |
|
|
 |
 |
 |
| |
Antworten |
|
| |
1. vielleicht ist http://php.net/imagecolorat etwas für Dich
2. das ist es! handelt sich allerdings ja nur um einen pixel... wie realisiere ich denn das komplette analysieren eines bildes? in einer schleife? for (i=1;i < pixelanzahl..... oder so aehnlich?
denkansatz?
3. Genau, Du kannst mit getimagesize die Größe ermitteln und dann eine Schleife erstellen, mit der Du pixelweise durch das Bild gehst. Ist nur die Frage, ob Du das Bild zeilenweise oder spaltenweise abarbeiten willst.
*** Nobody ***
4. vielen dank!
5. das geht auch relativ flott. Den Preis den Du dafür zahlst: das gd-Format (so wie es im Speicher liegt) ist ziemlich groß. Nichts worüber Du Dir bei einem Bild graue Haare wachsen lassen musst; bei gleichzeitigem Zugriff auf viele mittelgroße oder einige große Bilder macht es sich aber u.U. schon bemerkbar.
6. hallo, ich versuche jetzt in zwei schleifen alle bildpunkte mit ihren farbwerten auszugeben, aber leider bekomme ich das ueberhaupt nicht hin . ´weisws jemand weiter?
Code: In Zwischenablage kopieren (nur IE)
7. beschreibe mal strukturell Dein Skript, ungefähr so
- ermitteln der Bildgröße - für jedes i von 0 bis <Breite des Bildes> -- für jedes n von 0 bis <Höhe des Bildes> --- ... - Ausgabe des img-Elements
und dann überlege Dir, ob das, was Du da jeweils machst, an dieser Stelle sinnvoll ist.
8. Deine Schleife stimmt nicht !
falsch: for (i=0; i<=$imageheight;i++) { for (n=0; n<=$imageheight;n++) { $xpix++; $ypix++; }
richtig: for (i=0; i<=$imageheight;i++) { $xpix++; for (n=0; n<=$imagewidth;n++) { $ypix++; }
9. na gut, da jetzt schon vorgesagt wurde (gib einem Mann einen Fisch und der hat für heute zu essen; lehre ihn Angeln und er hat Essen sein Leben lang ), überlege Dir mal, ob es sinnvoll ist, in jedem Schleifendurchlauf das Bild neu per imagecreatefromjpeg(...) zu öffnen, es ändert sich ja nicht.
10. vielen dank, habe immer noch hunger jetzt bekomme ich naemlich garkeine ausgabe mehr - sondern nur eine leere seite
Code: In Zwischenablage kopieren (nur IE)
11. Schau dir das mal an:
http://www.sebastian-r.de/asciiart/
Das Script ist frei und da steht alles drin wie so was funzt.
12. wie wäre es dann damit:
for ($xpix=0; $xpix<$imagewidth; $xpix++) { for($ypix; $ypix<$imageheight; $ypix++) { ... } }
Wozu mehr Variablen einführen als nötig??
13. jetzt gehts: noch eine frage: wie kann ich doppelte werte etc. kummulieren? also bspweise alle ccff00 als "ccff00 kommt 300 mal vor" ausgeben. da ich die variabeln in flash laden moechte.
Code: In Zwischenablage kopieren (nur IE)
14. $k=array(); $k[$farbwert]++;
15. ich habe mich scheisse ausgedreuckt. ich meinte eher, dass ich bereiche festlege. bsp von FF3366 bis CC0033 (leicht rose bis rot) und fuer diesen bereich die "hits" uebergebe. wie fange ic da am besten an? bzw. koennte ich das auch auf 256 Farbwerte eingrenzen und dann bei diesen 256 farben die "hits" zaehlen. irgendwie mit imagecolorsforindex ()?
16. Da stellt sich erstmal die Frage, was überhaupt ein Farbbereich ist. Der RGB-Farbraum ist ein dreidimensionales Gebilde, in dem ein "Bereich" vieles sein kann...
17. anderer ansatz: wie schaffe ich es eine top hundert der meist-verwendeten farben zu erzeugen?
was mich auch noch frage: kann ich farben/farbwerte zu dezimal-zahlen umrechnen, also aus rgb oder hex eine einzige zahl pro farbe generieren? so liesse sich das 3dimensionale gebilde runterbrechen. ich habe schon nach entsprechenden funktionen gesucht, allerdings habe ich nichts 100% passendes gefunden.
tschuess
18. zu frage zwei: Nein, kann man natürlich nicht, da dadurch Information verlorengeht ... (Vektorrechnung lässt grüßen ) ...
apropos Vektorrechnung: Betrachten wir jede Farbe als Vektor, der einen Punkt im Farbraum beschreibt, so könnte man Bereiche definieren als:
Ein Farbbereich ist der Raum, der von zwei Farbvektoren in der Art aufgespannt wird, dass die zwei durch sie beschriebenen Punkte die gegenüberliegenden Eckpunkte eines zum Koordinatensystem des Farbraums parallelen Quaders sind.
Dann lässt sich durch einfache Vergleiche feststellen, ob eine Farbe in diesem Farbbereich liegt.
Eine andere Möglichkeit wäre, einen Farbbereich um eine Farbe herum mit einer Abstandsfunktion zu definieren.
|
|
|