css如何改变图片的颜色


当前第2页 返回上一页

下面给我的小姐姐一个暖暖的色调。

1

2

3

img {

    filter:sepia(50%)

}

大家是不是发现我并没有把url()方法写到这上面来

没错,因为我想把这个内容放到最后来说,filter:url()就是css滤镜改变图片的终极方法。CSS:filter可以导入一个svg滤镜,作为他自己的滤镜。

终极变色解决方案! filter:url();

为什么说filter:url()是图片变色的终极解决方案呢,请容我慢慢道来。

我们先科普一下PS的工作原理,我们都知道网页是有三原色的R(红) G(绿) B(蓝),常见的RGBA还包括一个opicity值,而opcity值是根据alpha通道计算出来的。也就是说,我们见到的网页的每一个像素点都是由红蓝绿再加alpha四个通道组成,每一个通道我们称之为色板,PS中的8位板的意思就是2的八次方256,意思就是每一个通道的取值范围都是(0-255) SVG 研究之路 (11) - filter:feColorMatrix

如果我们可以改变每个通道的值是不是就能完美的得到我们想要的任意颜色了呢,原理上,我们可以像ps那样利用svg滤镜得到任何我们想要的图像,不仅仅是变色。我们甚至可以凭空生成一幅图像。

svg feColorMatrix大法好

1

2

3

4

5

6

7

8

9

10

11

12

<svg height="0" xmlns="http://www.w3.org/2000/svg">

    <defs>

        <filter id="change">

                <feColorMatrix type="matrix" values="

                0 0 0 0 0.55

                0 0 0 0 0.23

                0 0 0 0 0

                0 0 0 0 1" />

        </filter>

    </defs>

</svg>

<img src="https://note.youdao.com/yws/res/237/WEBRESOURCE7e77df2551fe1a1db1b9d91f4d518917" alt="">

1

2

3

img {

    filter:url(#change);

}

通过单通道我们可以将图片变成单一的颜色

1

2

3

4

5

6

7

8

9

10

<svg height="0" xmlns="http://www.w3.org/2000/svg">

    <defs>

        <filter id="change">

               <feColorMatrix values="3 -1 -1 0 0

                       -1 3 -1 0 0

                       -1 -1 3 0 0

                       0 0 0 1 0" />

        </filter>

    </defs>

</svg>

通过双通道我们可以的到一些非常炫酷的PS效果

当然,在这里,只是举个例子,通过配置矩阵中的值,我们可以配置每一个像素点的值按照我们定义的规则显示

我们在这里详细讲一下feColorMatrix 矩阵的计算方式

其中Rin Gi

n Bin a(alpha) 为原始图片中每个像素点的rgba值

通过矩阵计算,得到的Rout Gout Bout Aout就是最终显示出来的rgba值。

将图片转为单色 拿棕色rgba(140,59,0,1)作为例子

根据上面的公式,我们可以简化一些计算,同一行中,只设置一个通道的值,其他通道为0

不难得出矩阵

1

2

3

4

0 0 0 0 目标值R

0 0 0 0 目标值G

0 0 0 0 目标值B

0 0 0 0 1

根据规则,只需要计算,255/想要显示的颜色对应通道 = 目标值

我们想要的棕色rgba(140,59,0,1) 换算成色板 rgba 为 140 59 0 255

可以算出目标值

1

2

3

4

0 0 0 0 0.55

0 0 0 0 0.23

0 0 0 0 0

0 0 0 0 1

总结

  • css3提供了filter这个属性,使得通过前端技术实现更多炫酷的特效成为了可能
  • 依赖于svg的滤镜,我们可以实现复杂的滤镜效果

注意

  • css:filter与ie上的filter并不是相同的概念
  • css:filter在不同的浏览器上兼容性不一样,您在使用的时候需要注意浏览器的兼容性

推荐学习:css视频教程

以上就是css如何改变图片的颜色的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

css属性前缀有哪些

css如何设置浮动

css声明语句总是以什么结束

css怎么设置楷体

css属性前缀的作用是什么?

带你玩转css中各种方向小箭头

浅谈css grid比bootstrap更适合创建布局的原因

css如何实现3d书本效果?(代码示例)

css perspective属性怎么用

css怎么把纵向排列变成横向

更多相关阅读请进入《css》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...