Sie können alle Pixel im Bild durchlaufen und mithilfe der getPixel-Methode den RGB-Wert bestimmen. Sie können dann ein Wörterbuch haben, das den ARGB-Wert zusammen mit einer Zählung speichert. Sie können dann sehen, welcher ARGB-Wert am meisten im Bild vorhanden ist.
%Vor%Wie bereits erwähnt, hat dies keine Sympathie für ähnliche Farben. Wenn Sie eine mehr generelle Farbe wünschen, können Sie einen Schwellenwert für Ähnlichkeit haben. z.B. anstatt:
%Vor%Sie könnten tun:
%Vor%Sie könnten die Schwelle von 10 bis zu dem, was Sie brauchen, aufstellen.
Diese Algorithm Challenge auf Stack Overflow ist möglicherweise auch nützlich:
Algorithmus-Herausforderung: Erzeuge ein Farbschema aus einem Bild
Ziehen Sie auch in Erwägung, ein Histogramm des Bildes zu erstellen - und die höchstwertige Farbe als "Hauptfarbe" zu verwenden: Ссылка
Dies wird die durchschnittliche Farbe für das Bild zurückgeben.
%Vor%Dadurch wird die Durchschnittsfarbe für das Bild mit Hilfe des unsicheren Zeigerzugriffs zurückgegeben. Hinweis: Code ist nur für 24bppRgb angepasst, könnte für andere Pixelformate angepasst werden.
%Vor%gist: Ссылка
Angenommen, Sie charakterisieren die Farben jedes Pixels mit RGB (im Gegensatz zu CMYK ), Sie könnten ein 3D-Array erstellen (jeweils eine Dimension für R, G und B). Entscheiden Sie sich dann für die Anzahl der Fächer, die Sie in jeder Dimension haben möchten - je mehr Fächer, desto größer ist die Differenzierung zwischen ähnlichen Farbtönen.
Sobald dies erledigt ist, durchlaufen Sie einfach eine Bitmap-Darstellung Ihres Bildes und summieren die # Pixel, die in jede der Zellen in Ihrem 3D-Array fallen. Die Zelle mit der höchsten Summe wird die vorherrschende Farbe sein.
Wahrscheinlich möchten Sie Ihren Algorithmus für die # Bins in jeder Dimension leicht konfigurierbar machen, so dass Sie einstellen können, wie stark er zwischen ähnlichen Farben unterscheidet.
%Vor%