CSS滤镜作为一个图像的颜色修改器

Mat*_*eon 20 css hsl css3

是否可以通过CSS滤镜方法(如HueRotate,饱和度和亮度)进行更改,PNG的颜色是否为全白色?像Photoshop的颜色叠加效果,但在CSS中.

这将是一个很好的解决方案,可以避免创建大量只改变颜色的图像.例如,一组具有UI的深色和浅色版本的图标.

Cia*_*tic 33

您还可以通过添加棕褐色然后一些饱和度,色调旋转(例如在CSS中)来着色白色图像:

filter: sepia() saturate(10000%) hue-rotate(30deg)

这应该使白色图像成为绿色图像.

http://jsbin.com/xetefa/1/edit

  • 添加亮度(50%)进出色轮,你应该能够获得任何颜色 (2认同)
  • 这应该是公认的答案 - 现在只要有人会制作一个在线工具来生成获取特定rgb/hsl值所需的过滤器... (2认同)
  • 我已经打开了一个关于从黑色到任何颜色的确切公式的问题http://stackoverflow.com/q/42966641/181228 (2认同)

bit*_*ler 6

这是一个很酷的主意,但它不适用于您建议的白色图像.您可以使用彩色图像进行操作,但如果全部为白色则不能.我使用webkit版本的CSS过滤器在Safari中尝试了以下内容:

<div style="background-color:#FFF; -webkit-filter: hue-rotate(90deg); width:100px; height:100px; border:1px solid #000;"></div>
Run Code Online (Sandbox Code Playgroud)

但盒子保持白色.如果我将颜色切换为蓝色,如下所示:

<div style="background-color:#00F; -webkit-filter: hue-rotate(90deg); width:100px; height:100px; border:1px solid #000;"></div>
Run Code Online (Sandbox Code Playgroud)

我拿到一个红色的盒子.这是因为滤镜适用于白色或黑色不存在的色调值.


xRa*_*her 6

其实谢天谢地是一种方式!

如前所述,主要困难在于灰度图像中基本上没有颜色.值得庆幸的是,有一个过滤器可以泵出一些颜色!

sepia(100%)

我在纯色图像上尝试了以下css样式,其基色是 #ccc

sepia(100%) contrast(50%) saturate(500%) hue-rotate(423deg)
Run Code Online (Sandbox Code Playgroud)

我能够将图像颜色更改为柠檬绿.

享受;)

  • Hue-rotate() 滤镜旨在达到最大“360deg”,因为色轮中有 360 度。因此,柠檬绿可以用“hue-rotate(63deg)”来表示,因为 423 - 360 = 63。 (2认同)