Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah saya boleh mengira purata warna imej menggunakan JavaScript?

Bagaimanakah saya boleh mengira purata warna imej menggunakan JavaScript?

DDD
DDDasal
2024-10-30 08:44:27271semak imbas

How can I calculate the average color of an image using JavaScript?

Dapatkan Purata Warna Imej menggunakan JavaScript

Menentukan warna purata imej adalah berharga untuk pelbagai aplikasi, tetapi ia boleh menjadi sangat mencabar untuk menyelesaikan tugas ini menggunakan JavaScript.

Pelaksanaan JavaScript

Nasib baik, dengan kemajuan dalam HTML5, pembangun JavaScript boleh memanfaatkan elemen untuk mengekstrak warna purata imej. Skrip berikut menunjukkan cara teknik ini boleh digunakan:

<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 &amp;&amp; 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>

Penggunaan

Untuk mendapatkan purata warna imej, panggil fungsi getAverageRGB, menghantar imej unsur sebagai hujah. Fungsi mengembalikan objek dengan nilai purata untuk komponen merah, hijau dan biru.

Penghadan

Teknik ini terhad kepada imej yang berada pada domain yang sama dan adalah hanya disokong oleh penyemak imbas yang menampilkan elemen kanvas HTML5. Untuk versi Internet Explorer yang lebih lama, pertimbangkan untuk memasukkan pustaka excanvas untuk mendayakan fungsi separa.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengira purata warna imej menggunakan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn