Apps für Android programmieren leicht gemacht!
durchschnitssfarbe von Bildern

Durchschnittsfarbe von Bildern

Vor kurzem musste ich, für die Anpassung des Designs, die Durchschnittsfarbe eines Bildes errechnen.

Dazu haben ich in meinem konkreten Fall die Durchschnittsfarbe dazu verwendet den Hintergrund farblich anzupassen, damit das Bild besser in der App angezeigt werden konnte.

Funktionsweise:

Um zu verstehen wie die Durchschnittsfarbe errechnet wird müssen wir zunächst verstehen wie Bilder aufgebaut sind.
Sie bestehen aus einzelnen Pixeln, einer bestimmten Anzahl in der Breite und einer bestimmten Anzahl in der Höhe. Bilder sind somit immer viereckig. Rundungen entstehen durch transparente Pixel. Jedem Pixel sind 3 Farbwerte zugeordnet. Blau, Rot und Grün. Aus der Kombination dieser drei Farben entstehen alle Farben.
Nun können wir jeden Pixel des Bildes abgehen, uns diese drei Farbwerte (0-255, 0=Pixel aus, 255=Pixel voll an) speichern und am Ende die drei Werte durch die Anzahl der Pixel teilen. Schon haben wir die Durchschnittsfarbe, nach Rot, Grün und Blau errechnet.

 

Java Code:

public int[] durchschnitssfarbe(Bitmap bild){
  int[] rueckgabe = new int[3];
  long rot = 0;
  long gruen = 0;
  long blau = 0;
  long anzahlpixel = 0;
  for (int y = 0; y < bild.getHeight(); y++) {
    for (int x = 0; x < bild.getWidth(); x++) {
      int c = bild.getPixel(x, y);

      anzahlpixel++;
      rot += Color.red(c);
      gruen += Color.green(c);
      blau += Color.blue(c);

    }
  }

  //berechnung des Durschnitts der Farbe Rot und schreiben in die Rückgabe
  rueckgabe[0] = rot/anzahlpixel;

  //berechnung des Durschnitts der Farbe Grün und schreiben in die Rückgabe
  rueckgabe[1] = gruen/anzahlpixel;

  //berechnung des Durschnitts der Farbe Blau und schreiben in die Rückgabe
  rueckgabe[2] = blau/anzahlpixel;

  return rueckgabe;
}

Als Rückgabe der Funktion bekommt man dann einen Array.
Stelle 0 des Arrays = Durchschnittsfarbe Rot
Stelle 1 des Arrays = Durchschnittsfarbe Grün
Stelle 2 des Arrays = Durchschnittsfarbe Blau

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld