Cara Mengurangi Kecerahan Gambar di CSS


106

Saya ingin mengurangi kecerahan gambar di CSS. Saya banyak mencari tapi yang saya punya hanyalah tentang bagaimana mengubah opacity, tapi itu membuat gambar lebih cerah. ada yang bisa bantu saya ?


Anda dapat menggunakan opasitas atribut
Satinder singh

Saya menggunakannya tetapi meningkatkan kecerahan ...
Shadi

jawaban yang diterima berfungsi dengan baik, tetapi ada juga filterefek standar CSS baru yang ingin Anda waspadai di masa mendatang. Lihat jawaban saya.
Spudley

1
@shady, dapatkah Anda dengan ramah meninjau kembali pertanyaan ini untuk menandai salah satu jawaban yang menawarkan solusi yang melibatkan filter sebagai benar. Jawaban yang Anda tandai benar akan menjadi cara untuk melakukannya pada katakanlah 2006.
Wes Modes

Jawaban:


176

Fitur yang Anda cari adalah filter. Ia mampu melakukan berbagai efek gambar, termasuk kecerahan:

#myimage {
    filter: brightness(50%);
}

Anda dapat menemukan artikel bermanfaat tentangnya di sini: http://www.html5rocks.com/en/tutorials/filters/understanding-css/

Yang lain: http://davidwalsh.name/css-filters

Dan yang terpenting, spesifikasi W3C: https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html

Perhatikan bahwa ini adalah sesuatu yang baru-baru ini masuk ke CSS sebagai fitur. Ini tersedia, tetapi sejumlah besar browser di luar sana belum mendukungnya, dan mereka yang mendukungnya akan membutuhkan prefiks vendor (mis -webkit-filter:. -moz-filter, Dll).

Mungkin juga untuk melakukan efek filter seperti ini menggunakan SVG. Dukungan SVG untuk efek ini sudah mapan dan didukung secara luas (spesifikasi filter CSS telah diambil dari spesifikasi SVG yang ada)

Perhatikan juga bahwa ini jangan disamakan dengan filtergaya berpemilik yang tersedia di versi lama IE (meskipun saya dapat memprediksi masalah dengan ruang nama bentrok saat gaya baru menjatuhkan awalan vendornya).

Jika tidak ada yang berhasil untuk Anda, Anda masih dapat menggunakan opacityfitur yang ada , tetapi tidak seperti yang Anda pikirkan: cukup buat elemen baru dengan warna gelap pekat, letakkan di atas gambar Anda, dan hapus menggunakan opacity. Efeknya adalah gambar di belakang digelapkan.

Terakhir, Anda dapat memeriksa dukungan browser di filter sini .


32

OP ingin mengurangi kecerahan, bukan meningkatkannya. Opacity membuat gambar terlihat lebih cerah, bukan lebih gelap.

Anda dapat melakukan ini dengan melapisi div hitam di atas gambar dan mengatur opasitas div itu.

<style>
#container {
    position: relative;
}
div.overlay {
    opacity: .9;
    background-color: black;
    position: absolute;
    left: 0; top: 0; height: 256px; width: 256px;
}
</style>

Normal:<br />
<img src="http://i.imgur.com/G8eyr.png">
<br />
Decreased brightness:<br />
<div id="container">
    <div class="overlay"></div>
    <img src="http://i.imgur.com/G8eyr.png">
</div>

DEMO


24
Opacity tidak membuat apapun lebih terang atau lebih gelap. Ini mengubah transparansi objek. Apakah ini berpengaruh atau tidak untuk membuat sesuatu menjadi lebih cerah atau lebih gelap akan bergantung pada warna latar belakang item yang Anda ubah opasitasnya. Bertentangan dengan apa yang Anda katakan, Anda dapat membuat sesuatu menjadi lebih gelap dengan meningkatkan opacity jika Anda meletakkannya di latar belakang hitam. Gambar transparan 99% pada latar belakang hitam akan tampak hampir hitam. Oleh karena itu, saya tidak melihat mengapa div overlay terpisah diperlukan. Anda bisa mengaturnya di BG hitam. Misalnya: jsbin.com/isemec/1/edit
NickG

@NickG Saya mengatakan itu dengan asumsi latar belakang putih. Apa yang telah Anda lakukan adalah hal yang sama dengan kode saya, hanya saja saya meletakkan hamparan hitam semi transparan di atas gambar dan Anda memiliki latar belakang hitam buram dengan gambar semi transparan di atasnya.
sachleen

17

Singkatnya, letakkan hitam di belakang gambar, dan turunkan kekeruhan. Anda dapat melakukan ini dengan membungkus gambar di dalam div, dan kemudian menurunkan opasitas gambar.

Sebagai contoh:

<!DOCTYPE html>

<style>
    .img-wrap {
        background: black;
        display: inline-block;
        line-height: 0;
    }
        .img-wrap > img {
            opacity: 0.8;
        }
</style>

<div class="img-wrap">
    <img src="http://mikecane.files.wordpress.com/2007/03/kitten.jpg" />
</div>

Ini adalah JSFiddle.


15

Anda bisa menggunakan:

filter: brightness(50%);
-webkit-filter: brightness(50%);
-moz-filter: brightness(50%);
-o-filter: brightness(50%);
-ms-filter: brightness(50%);

9
Kebijakan "ayo buang prefiks untuk berjaga-jaga" ini salah. Pertama, jika Opera mendukungnya, tidak akan ada -o-(Opera menggunakan Webkit / Blink sekarang), kedua, Firefox langsung beralih ke non-prefiks filter, ketiga, urutan Anda salah, non-prefiks harus menjadi yang terakhir, keempat, sintaks untuk IE -ms-filterberbeda ( progid:DXImageTransform, dll), kelima, sintaks untuk Firefox berbeda dan membutuhkan SVG ( Lihat dokumen ), keenam, fitur-fitur baru sepertinya tidak akan diawali karena vendor menyadari betapa buruknya sebuah ide
Camilo Martin

5
@CamiloMartin, semestinya Anda memberikan jawaban yang lebih lengkap untuk pertanyaan ini karena belum dijawab secara lengkap.
Wes Modes

-webkit-filter: brightness () / -webkit-filter: contrast () berfungsi. Ini adalah jawaban yang tepat untuk pertanyaan itu.
Shilpa

Anda dapat menggunakannya dalam sass mixin seperti ini: gist.github.com/johnferrie/3836468
Erez Lieberman

6

Dengan CSS3 kita dapat dengan mudah mengatur gambar. Tapi ingat ini tidak mengubah gambar. Ini hanya menampilkan gambar yang disesuaikan.

Lihat kode berikut untuk lebih jelasnya.

Untuk membuat gambar menjadi abu-abu:

img {
 -webkit-filter: grayscale(100%);
 -moz-filter: grayscale(100%);
}

Untuk memberikan tampilan sepia:

    img {
     -webkit-filter: sepia(100%);
    -moz-filter: sepia(100%);
}

Untuk mengatur kecerahan:

 img {
     -webkit-filter: brightness(50%);
     -moz-filter: brightness(50%);  
  }

Untuk mengatur kontras:

 img {
     -webkit-filter: contrast(200%);
     -moz-filter: contrast(200%);    
}

Untuk mengaburkan gambar:

    img {
     -webkit-filter: blur(10px);
    -moz-filter: blur(10px);
  }

1
Harap jangan memposting jawaban yang persis sama untuk beberapa pertanyaan: itu tidak cocok untuk semua atau pertanyaan adalah duplikat yang harus ditandai / ditutup seperti itu.
kleopatra


2

Jika Anda memiliki gambar latar belakang, Anda dapat melakukan ini: Setel gradien rgba () pada gambar latar belakang.

.img_container {
  float: left;
  width: 300px;
  height: 300px;
  display: flex;
  justify-content: center;
  align-items: center;
  border : 1px solid #fff;
}

.image_original {
  background: url(https://i.ibb.co/GkDXWYW/demo-img.jpg);
}

.image_brighness {
  background: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), /* the gradient on top, adjust color and opacity to your taste */
  url(https://i.ibb.co/GkDXWYW/demo-img.jpg);
}

.img_container p {
  color: #fff;
  font-size: 28px;
}
<div class="img_container image_original">
  <p>normal</p>
</div>
<div class="img_container image_brighness ">
  <p>less brightness</p>
</div>


luar biasa. Saya membutuhkan solusi untuk menggelapkan gambar latar belakang dan semua jawaban lainnya menggelapkan seluruh div.
nuander



0

coba ini jika Anda perlu mengubah gambar hitam menjadi putih:

.classname{
    filter: brightness(0) invert(1);
}

-3

Suka

.classname
{
 opacity: 0.5;
}

terima kasih tapi itu meningkatkan kecerahan bukan menguranginya !!
Shadi

Itu tergantung dari warna background.
kiamat

kanan @zgnilec tergantung dari warna background ... jika di taruh hitam kecerahan gambar akan berkurang
Shadi

ini tidak berfungsi untuk meningkatkan kecerahan lebih dari 100%, opasitas hanya bisa mencapai 1
Javis Perez

Sebagai pembicara non-Inggris, saya sebenarnya ingin mencari "opacity" dan mendapatkan usulan jawaban ini. Bahkan jika jawaban ini tidak menjawab pertanyaannya, ada baiknya mengetahui bahwa opacitymeningkatkan kecerahan. ;)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.