The image-rendering
mendefinisikan properti bagaimana browser harus membuat sebuah gambar jika skala naik atau turun dari dimensi aslinya. Secara default, setiap browser akan mencoba menerapkan aliasing ke gambar berskala ini untuk mencegah distorsi, tetapi ini terkadang menjadi masalah jika kita ingin gambar mempertahankan bentuk piksel aslinya.
img ( image-rendering: auto; image-rendering: crisp-edges; image-rendering: pixelated; )
Tentang tiga kemungkinan nilai tersebut:
auto
: nilai default yang menggunakan algoritme standar browser untuk memaksimalkan tampilan gambar.crisp-edges
: kontras, warna, dan tepi gambar akan dipertahankan tanpa perataan atau pemburaman apa pun. Menurut spesifikasi, ini secara khusus ditujukan untuk seni piksel. Nilai ini berlaku untuk gambar yang diperbesar atau diperkecil.pixelated
: saat ukuran gambar berubah, browser akan mempertahankan gaya pikselnya dengan menggunakan penskalaan tetangga terdekat. Nilai ini hanya berlaku untuk gambar yang diskalakan.
Properti ini dapat diterapkan ke gambar latar belakang, canvas
elemen serta gambar sebaris. Namun, penting untuk diperhatikan bahwa menguji nilai-nilai ini pada saat ini sangat membingungkan karena kurangnya dukungan browser yang konsisten.
Contoh
Berikut adalah gambar sebaris yang sangat kecil yang terdiri dari empat piksel berwarna:
Jika kami mengubah lebar gambar sebaris ini menjadi 300px
di Chrome (41) kami akan menemukan browser telah berusaha mengoptimalkan gambar sebaik mungkin:
Untuk mempertahankan tampilan pixelated aslinya kita dapat menggunakan nilai berikut pixelated
, seperti:
img ( image-rendering: pixelated; )
Ini menghasilkan browser memilih algoritma alternatif untuk memproses gambar. Dalam contoh ini, Chrome akan menghapus aliasing default:
Sayangnya setelah banyak pengujian, tampaknya browser menafsirkan crisp-edges
dan pixelated
nilai dengan cara yang sangat membingungkan saat ini sehingga penting untuk dicatat sekali lagi bahwa spesifikasi ini masih dalam tahap awal. Misalnya Chrome tampak merender pixelated
gambar dengan cara yang sama seperti Firefox dan Safari akan merender gambar crisp-edges
.
Contoh kode QR
Kasus penggunaan lain dari properti ini mungkin untuk kode QR di mana Anda ingin meningkatkan ukurannya tanpa mengubahnya dengan menggunakan anti-aliasing standar. Pastikan untuk memeriksa contoh ini dalam mode layar penuh untuk melihat peregangan gambar:
Lihat demo Pen Image-rendering oleh Robin Rendle (@robinrendle) di CodePen.
Alihkan contoh
Di Pena di bawah ini, Anda dapat beralih di antara nilai-nilai ini dan melihat perbedaan antara browser:
Lihat demo rendering Gambar Pena oleh Robin Rendle (@robinrendle) di CodePen.
Dukungan browser
crisp-edges
saat ini membutuhkan prefiks vendor ( -moz-crisp-edges
) untuk mendapatkan dukungan terbaik.
Data dukungan browser ini berasal dari Caniuse, yang lebih detail. Angka menunjukkan bahwa browser mendukung fitur pada versi tersebut dan yang lebih baru.
Desktop
Chrome | Firefox | YAITU | Tepi | Safari |
---|---|---|---|---|
41 | 3,6 * | 11 * | 79 | 10 |
Ponsel / Tablet
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 * | 81 | 10.0-10.2 |
Pada saat pembaruan ini, Firefox 61 mendukung crisp-edges
tetapi tidak mendukung pixelated
dan Chrome 68 mendukung pixelated
tetapi tidak crisp-edges
.