Mengedit Gambar Dalam CSS: Menggabungkan Teknik
() translation by (you can also view the original English article)
Dalam dua tutorial terakhir seri ini, kita telah mendiskusikan bagaimana filter dan blend mode dapat sepenuhnya mengubah penampilan gambar. Dalam tutorial ini, saya akan meliput hal-hal dasar editing gambar dengan menggunakan kedua properti itu bersama-sama.
Hal-hal Dasar
Editing gambar non primitif biasanya memerlukan lebih dari hanya sebuah elemen tunggal. Ini dapat dicapai dengan pseudo elemen. Sayangnya, ada lebih kerumitan. Elemen img
hadir di bawah elemen yang diganti. Sebagai hasilnya, :before
dan :after
tidak akan berkerja dengan tag image. Untuk menyelesaikan isu ini, kita akan memerlukan sebuah pembungkus di sekitar gambar kita, dan tag figure
tampaknya merupakan kandidat terbaik dalam hal ini. Oleh karena itu, markup kita harusnya tampak seperti ini:
1 |
<figure>
|
2 |
<img src="image-url"> |
3 |
</figure>
|
Semua efek editing yang akan kita buat akan memiliki core CSS yang umum.
1 |
figure { |
2 |
position: relative; |
3 |
}
|
4 |
|
5 |
figure:before, |
6 |
figure:after { |
7 |
content: ''; |
8 |
height: 100%; |
9 |
width: 100%; |
10 |
top: 0; |
11 |
left: 0; |
12 |
position: absolute; |
13 |
}
|
14 |
|
15 |
img { |
16 |
width: 100%; |
17 |
height: 100%; |
18 |
margin: 0; |
19 |
padding: 0; |
20 |
}
|
Saya telah menggunakan pseudo elemen :before
dan :after
sehingga saya dapat menerapkan berbagai blend mode. Perhatikan bahwa saya memiliki set width
dan height
ke 100% untuk mengcover figure
dengan benar, dan saya telah menggunakan positioning absolut untuk alignment yang sempurna.
Dalam kebanyakan kaasus, kita akan menerapkan filter pada gambar dan menggunakan blend mode dan efek lainnya pada pseudo elemen. Gambar di bawah adalah gambar original yang akan kita edit.



Gambar Grayscale Kontras Tinggi
Untuk membuat gambar kontras tinggi, kamu dapat hanya mengatur kontras ke nilai yang lebih tinggi, namun menaikkan brightness membuat efeknya lebih dramatis. Jika kamu hanya menggunakan filter, maka itu yang dapat kamu lakukan. Bagaimana pun juga, dengan blend mode kamu juga dapat menambahkan inset box-shadow dengan overlay
yang bercampur dengan gambar untuk hasil yang lebih baik. Berikut CSS untuk efek ini:
1 |
img { |
2 |
filter: contrast(1.8) brightness(1.5) grayscale(1); |
3 |
}
|
4 |
|
5 |
figure:before { |
6 |
z-index: 3; |
7 |
mix-blend-mode: overlay; |
8 |
box-shadow: 0 0 200px black inset; |
9 |
}
|
Menambahkan sebuah z-index menjaga pseudo elemen kita di atas gambar. Saya telah menggunakan blend mode overlay untuk menjaga gambar sedikit gelap setelah penerapan box-shadow.
Coba mengarahkan pada gambar di bawah untuk melihat perbedaan antara filter dan combo antara filter dan blend mode.
Untuk latihan, kamu mungkin mencoba nilai yang berbeda untuk properti box-shadow
dalam demo CodePen.
Memberikan Tampilan Lebih Tua Pada Gambar
Warna dalam kebanyakan foto tua umumnya memudar, dan mereka memiliki garis luar coklat kemerahan. Untuk membuat ulang efek yang sama, kita akan menggunakan lebih banyak elemen dan filter. Berikut CSS kita:
1 |
img { |
2 |
filter: saturate(0.6); |
3 |
}
|
4 |
|
5 |
figure { |
6 |
filter: contrast(1.1) saturate(1.9) sepia(0.7) grayscale(0.3); |
7 |
}
|
8 |
|
9 |
figure:before { |
10 |
z-index: 2; |
11 |
mix-blend-mode: multiply; |
12 |
box-shadow: 0 0 250px brown inset; |
13 |
background: rgba(125, 100, 0, 0.3); |
14 |
}
|
15 |
|
16 |
figure:after { |
17 |
z-index: 3; |
18 |
mix-blend-mode: hard-light; |
19 |
box-shadow: 0 0 150px pink inset; |
20 |
background: rgba(198, 155, 0, 0.3); |
21 |
}
|
Kali ini, saya telah menerapkan filter pada kedua gambar dan figure. Pada dasarnya, kita ingin mengubah gambar agar kurang berwarna. Ini dicapai dengan menggunakan saturate filter dengan nilai kurang dari 1. Filter figure diterapkan setelah semua blending. Jika kamu tidak menerapkan filter ini, hasil akhirnya akan memiliki lebih banyak bayangan coklat yang menonjol, dimana ini tidak diinginkan.
Kamu harus memperhatikan bahwa saya juga menerapkan background kemerahan semi transparan pada kedua pseudo elemen. Ini memberikan gambar tampilan coklat kemerahan. Box-shadow digunakan untuk menjaga garis luar lebih coklat.
Kamu harusnya bereksperimen dengan bermacam properti di dalam demo untuk melihat jika kamu bisa mendapatkan hasil yang lebih baik.
Menambahkan Hue Spesifik
Kali ini kita akan mencoba memberikan hue biru pada gambar. Dibandingkan dengan warna hangat, menambahkan shade warna dingin seperti biru membuat gambar tampak mudah bagi mata kita.
Ini adalah CSS yang perlu kita terapkan:
1 |
img { |
2 |
filter: brightness(1.1) contrast(1.3); |
3 |
}
|
4 |
|
5 |
figure:before { |
6 |
z-index: 2; |
7 |
mix-blend-mode: multiply; |
8 |
box-shadow: 0 0 100px rgba(100, 150, 200, 1) inset, 0 0 300px rgba(100, 150, 200, 1) inset; |
9 |
}
|
10 |
|
11 |
figure:after { |
12 |
z-index: 3; |
13 |
mix-blend-mode: difference; |
14 |
background: rgba(0, 0, 255, 0.3); |
15 |
}
|
Saya mulai menaikkan brightness dan kontras gambar kita. Ini akan memastikan bahwa gambar kita tetap menonjol dan tidak datar selama editing.
Kamu umumnya harus menggunakan banyak box-shadow
dengan warna yang lebih cerah untuk perubahan yang dapat dikenali. Itulah mengapa saya menambahkan dua box-shadow
kebiruan pada gambar. Hanya menggunakan box-shadow
melarang shade biru pada tepi gambar kita. Untuk menyebarkan warna biru ke seluruh gambar, saya menggunakannya sebagai background pada pseudo elemen :after
. Berikut hasil akhir semua filter ini:
Coba tambahkan hue hijau atau merah pada gambar dalam demo.
Kabut Kekuningan
Pernahkah kamu menyaksikan senja sedikit berawan dengan partikel pasir tertahan di udara karena angin? Dalam kondisi cahaya tersebut, semuanya memiliki hue kekuningan, dan obyek tampaknya kelihatan sedikit membosankan. Untuk membuat ulang efek yang sama, kita memerlukan CSS berikut:
1 |
img { |
2 |
filter: saturate(0.2); |
3 |
}
|
4 |
|
5 |
figure { |
6 |
filter: contrast(1.8) brightness(1.1) saturate(1.5); |
7 |
}
|
8 |
|
9 |
figure:before { |
10 |
z-index: 2; |
11 |
mix-blend-mode: multiply; |
12 |
box-shadow: 0 0 100px rgba(0,0,0,0.5) inset; |
13 |
background: rgba(125, 100, 0, 0.3); |
14 |
}
|
15 |
|
16 |
figure:after { |
17 |
z-index: 3; |
18 |
mix-blend-mode: hard-light; |
19 |
box-shadow: 0 0 500px rgba(0,0,0,0.6) inset; |
20 |
background: rgba(198, 155, 0, 0.3); |
21 |
}
|
Hal pertama yang saya lakukan adalah mengurangi saturasi gambar. Kedua pseudo elemen :before
dan :after
memiliki background kekuningan tembus cahaya untuk menambahkan hue yang diinginkan. Menggunakan blend mode hard-light
pada :after
membuat kabut lebih menonjol.
box-shadow
pada pseudo elemen meningkatkan fokus pada biker. Akhirnya, menerapkan filter contrast,
brightness
dan saturation
pada elemen figure
mengumpulkan kabut.
Di dalam demo, kamu mungkin mencoba nilai berbeda untuk berbagai properti untuk melihat bagaimana mereka mempengaruhi hasil akhir.
Pemikiran Akhir
Tidak sulit untuk mengedit gambar dalam CSS. Jika kamu berpegang pada poin-poin yang saya diskusikan dalam tutorial ini, kamu akan dapat membuat sendiri beberapa filter menakjubkan.
Untuk latihan, kamu dapat bereksperimen dengan demo dalam tutorial ini atau mencoba untuk membuat ulang filter Instagram populer. Kamu dapat juga memeriksa variasi animasi dan efek yang tersedia di Envato Marketplace dalam hal kamu memerlukan beberapa filter siap pakai.