La fonctionnalité que vous recherchez est filter. Il est capable de faire une gamme d'effets d'image, y compris la luminosité:
#myimage {
filter: brightness(50%);
}
Vous pouvez trouver un article utile à ce sujet ici: http://www.html5rocks.com/en/tutorials/filters/understanding-css/
Un autre: http://davidwalsh.name/css-filters
Et surtout, les spécifications W3C: https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html
Notez que c'est quelque chose qui n'est entré que très récemment dans CSS en tant que fonctionnalité. Il est disponible, mais un grand nombre de navigateurs ne le supportent pas encore, et ceux qui le prennent en charge nécessiteront un préfixe de fournisseur (c'est -webkit-filter:-à- dire -moz-filter, etc.).
Il est également possible de faire des effets de filtre comme celui-ci en utilisant SVG. Le support SVG pour ces effets est bien établi et largement supporté (les spécifications de filtre CSS ont été tirées des spécifications SVG existantes)
Notez également que cela ne doit pas être confondu avec le filterstyle propriétaire disponible dans les anciennes versions d'IE (bien que je puisse prédire un problème avec le conflit d'espace de noms lorsque le nouveau style supprime son préfixe de fournisseur).
Si rien de tout cela ne fonctionne pour vous, vous pouvez toujours utiliser la opacityfonctionnalité existante , mais pas la façon dont vous pensez: créez simplement un nouvel élément avec une couleur sombre unie, placez-le au-dessus de votre image et faites-le disparaître en utilisant opacity. L'effet sera de l'image derrière l'assombrissement.
Enfin, vous pouvez vérifier le support du navigateur filter ici .