Funkcja, której szukasz, to filter. Jest w stanie wykonywać szereg efektów graficznych, w tym jasność:
#myimage {
filter: brightness(50%);
}
Możesz znaleźć pomocny artykuł na ten temat tutaj: http://www.html5rocks.com/en/tutorials/filters/understanding-css/
Inny: http://davidwalsh.name/css-filters
A co najważniejsze, specyfikacje W3C: https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html
Zauważ, że jest to coś, co dopiero niedawno pojawiło się w CSS jako funkcja. Jest on dostępny, ale duża liczba przeglądarek tam nie będzie wspierać go jeszcze, a te, które obsługują to będzie wymagało od przedrostka sprzedawcy (tj -webkit-filter:, -moz-filteritp).
Możliwe jest również wykonanie takich efektów filtrów za pomocą SVG. Obsługa SVG dla tych efektów jest dobrze ugruntowana i szeroko obsługiwana (specyfikacje filtrów CSS zostały zaczerpnięte z istniejących specyfikacji SVG)
Należy również zauważyć, że nie należy tego mylić z zastrzeżonym filterstylem dostępnym w starszych wersjach IE (chociaż mogę przewidzieć problem ze zderzeniem przestrzeni nazw, gdy nowy styl opuszcza prefiks dostawcy).
Jeśli nic z tego nie działa, możesz nadal korzystać z istniejącej opacityfunkcji, ale nie w sposób, w jaki myślisz: po prostu utwórz nowy element z jednolitym ciemnym kolorem, umieść go na obrazie i zaniknij za pomocą opacity. Efektem będzie przyciemnienie obrazu.
Wreszcie możesz sprawdzić filter tutaj obsługę przeglądarek .