Heim > Web-Frontend > js-Tutorial > Wie berechnet man die durchschnittliche Farbe eines Bildes mit JavaScript?

Wie berechnet man die durchschnittliche Farbe eines Bildes mit JavaScript?

Mary-Kate Olsen
Freigeben: 2024-11-01 07:04:30
Original
514 Leute haben es durchsucht

How to Calculate the Average Color of an Image Using JavaScript?

Durchschnittliche Bildfarbe in JavaScript ermitteln

Problem:

Ist es möglich, die Farbe zu bestimmen? die durchschnittliche Farbe eines Bildes mithilfe von JavaScript?

Lösung:

Auch wenn dies möglicherweise nicht sofort ersichtlich ist, können Sie tatsächlich die durchschnittliche Farbe eines Bildes mithilfe von JavaScript berechnen. Der Schlüssel dazu liegt in der Nutzung der HTML5-Funktion Element.

Um die durchschnittliche Farbe aus einem Bild zu extrahieren, führen Sie die folgenden Schritte aus:

  1. Erstellen Sie eine Element und rufen Sie seinen 2D-Kontext ab.
  2. Zeichnen Sie das Bild mit der Methode drawImage() auf die Leinwand.
  3. Verwenden Sie getImageData(), um die Pixeldaten von der Leinwand abzurufen.
  4. Durchlaufen Sie jedes Pixel und akkumulieren Sie die Rot-, Grün- und Blauwerte in separaten Variablen.
  5. Dividieren Sie die akkumulierten Werte durch die Gesamtzahl der Pixel, um die durchschnittliche Farbe zu erhalten.

Hier ist eine Beispielfunktion, die den beschriebenen Algorithmus implementiert:

<code class="javascript">function getAverageRGB(imgEl) {
    var blockSize = 5, // only visit every 5 pixels
        defaultRGB = { r: 0, g: 0, b: 0 }, // for non-supporting envs
        canvas = document.createElement('canvas'),
        context = canvas.getContext && canvas.getContext('2d'),
        data, width, height,
        i = -4,
        length,
        rgb = { r: 0, g: 0, b: 0 },
        count = 0;

    if (!context) {
        return defaultRGB;
    }

    height = canvas.height = imgEl.naturalHeight || imgEl.offsetHeight || imgEl.height;
    width = canvas.width = imgEl.naturalWidth || imgEl.offsetWidth || imgEl.width;

    context.drawImage(imgEl, 0, 0);

    try {
        data = context.getImageData(0, 0, width, height);
    } catch(e) {
        /* security error, img on diff domain */
        return defaultRGB;
    }

    length = data.data.length;

    while ((i += blockSize * 4) < length) {
        ++count;
        rgb.r += data.data[i];
        rgb.g += data.data[i + 1];
        rgb.b += data.data[i + 2];
    }

    // ~~ used to floor values
    rgb.r = ~~(rgb.r / count);
    rgb.g = ~~(rgb.g / count);
    rgb.b = ~~(rgb.b / count);

    return rgb;
}</code>
Nach dem Login kopieren

Diese Funktion verwendet ein Bildelement als Eingabe und gibt ein Objekt zurück, das die durchschnittlichen Rot-, Grün- und Blauwerte als Ganzzahlen enthält.

Das obige ist der detaillierte Inhalt vonWie berechnet man die durchschnittliche Farbe eines Bildes mit JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage