Menggunakan <canvas>
elemen HTML5 , saya ingin memuat file gambar (PNG, JPEG, dll.), Menggambarnya ke kanvas sepenuhnya secara transparan, dan kemudian memudar. Saya telah menemukan cara untuk memuat gambar dan menariknya ke kanvas, tapi saya tidak tahu bagaimana mengubah opacity setelah digambar.
Inilah kode yang saya miliki sejauh ini:
var canvas = document.getElementById('myCanvas');
if (canvas.getContext)
{
var c = canvas.getContext('2d');
c.globalAlpha = 0;
var img = new Image();
img.onload = function() {
c.drawImage(img, 0, 0);
}
img.src = 'image.jpg';
}
Akankah seseorang tolong tunjukkan saya ke arah yang benar seperti properti untuk diatur atau fungsi untuk memanggil yang akan mengubah opacity?
canvas
elemen yang memilikiglobalAlpha
properti, tetapi konteks yang Anda dapatkan dari kanvas.canvas2d.fillStyle = "rgba(255, 255, 255, 0.5)";
tidak berfungsi. Nilai harus dalam hex.Beberapa kode contoh sederhana untuk menggunakan
globalAlpha
:Jika Anda perlu
img
dimuat:Catatan:
Tetapkan yang
'src'
terakhir, untuk menjamin bahwaonload
pawang Anda dipanggil di semua platform, bahkan jika gambar sudah ada dalam cache.Bungkus perubahan ke hal-hal seperti
globalAlpha
antara asave
danrestore
(sebenarnya gunakan banyak), untuk memastikan Anda tidak merusak pengaturan dari tempat lain, terutama ketika bit kode gambar akan dipanggil dari acara.sumber
globalAlpha
tidak mengaburkan apa pun. Ini akan mengatur alpha untuk semua gambar berikutnya (itu tidak mengubah apa pun yang sudah ditarik), itulah sebabnya dalam contoh kode saya membungkusnyasave
danrestore
, untuk membatasi apa yang berlaku.Edit:
Jawaban yang ditandai "benar" tidak benar.Itu mudah dilakukan. Coba kode ini, ganti "ie.jpg" dengan gambar apa pun yang berguna:
Kuncinya adalah properti globalAlpha.
Diuji dengan IE 9, FF 5, Safari 5, dan Chrome 12 pada Win7.
sumber
Posting sudah lama sejauh ini saya akan pergi dengan saran saya. Saran didasarkan pada manipulasi piksel dalam konteks kanvas 2d. Dari MDN:
Untuk memanipulasi piksel, kami akan menggunakan dua fungsi di sini - getImageData dan putImageData
penggunaan fungsi getImageData:
dan sintaks putImageData:
Di mana konteks adalah konteks kanvas 2d Anda
Jadi untuk mendapatkan nilai merah hijau biru dan alfa, kami akan melakukan hal berikut:
Di mana x adalah x offset, y adalah y offset di atas kanvas
Jadi kami memiliki kode yang membuat gambar setengah transparan
Anda dapat membuat Anda memiliki "bayangan" - lihat artikel MDN lengkap di sini
sumber
Kamu bisa. Kanvas transparan dapat dengan cepat pudar dengan menggunakan operasi komposit global tujuan-keluar . Ini tidak 100% sempurna, kadang-kadang meninggalkan beberapa jejak tetapi bisa di-tweak, tergantung apa yang dibutuhkan (yaitu menggunakan 'sumber-lebih' dan mengisinya dengan warna putih dengan alfa di 0,13, kemudian memudar untuk menyiapkan kanvas).
sumber
Saya pikir ini menjawab pertanyaan terbaik, itu sebenarnya mengubah nilai alpha dari sesuatu yang telah ditarik. Mungkin ini bukan bagian dari api ketika pertanyaan ini diajukan.
diberikan konteks 2d
c
.sumber
Jika Anda menggunakan perpustakaan jCanvas, Anda dapat menggunakan properti opacity saat menggambar. Jika Anda membutuhkan efek fade di atas itu, cukup menggambar ulang dengan nilai yang berbeda.
sumber
Kamu tidak bisa Ini grafis mode langsung. Tetapi Anda dapat mensimulasikannya dengan menggambar persegi panjang di atasnya dengan warna latar belakang dengan opacity.
Jika gambar lebih dari sesuatu yang bukan warna konstan, maka itu menjadi sedikit lebih rumit. Anda harus dapat menggunakan metode manipulasi piksel dalam kasus ini. Simpan saja area tersebut sebelum menggambar gambar, dan kemudian haluskan kembali di atas dengan opacity sesudahnya.
sumber