Rumah > Artikel > hujung hadapan web > Bagaimanakah saya boleh mengira purata warna imej menggunakan 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
<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>
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!