SVG滤镜:feComponentTransfer
来源:互联网 发布:文字修改软件 编辑:程序博客网 时间:2024/05/16 12:19
feComponentTransfer滤镜的主要作用为每个像素点颜色的转换,包括亮度、对比度、色彩平衡的调整等。
其采用的方法为对每一个颜色通道进行独立的操作。
feComponentTransfer拥有四个子元素:
feFuncR、feFuncG、feFuncB、feFuncA,
分别对输入值的红色、绿色、蓝色与透明度四个通道的值进行数值处理。
四个子元素包括以下常用属性:
type:每一个通道下数值处理的方法类型。
取值:identity / table / discrete / linear /gamma。
identity:颜色值不变化。
table:颜色值根据提供的tableValues值进行转变。
tableValues为n个值,v0,v1,...,vn-1,0=< v <= 1,值从v0到vn-1依次增大,将颜色通道分为n-1个范围。
如:
<span style="white-space:pre"></span><feFuncR type="table" tableValues="0.0 0.7 0.9 1.0" />tableValues共有四个值,原始红色通道别划分为3个范围: 0.00 -- 0.33 ,0.33 -- 0.66 , 0.66 -- 1.00。
我们给出的tableValues的值将红色通道重新划分为3个范围: 0.00 -- 0.70,0.70 -- 0.90,0.90 -- 1.00。
当输入值为 0.5 时,0.5为原始通道中第二个范围(0.33 -- 0.66) 范围的中间值,对应到新的通道范围的第二个范围(0.70 -- 0.90)的中间值 0.80,则0.80为输出值。
w3c官方文档给出的计算公式为:
k/n <= C < (k+1)/n, 则C' = vk + (C - k/n)*n * (vk+1 - vk),其中C为输入,C'为输出,若C=1,C'=vn。
discrete:类似table的颜色值计算方法,根据tableValues计算处理颜色值。
区别:tableValues的值可以不是依次增大的,通道划分的范围多一个。
同样,根据tableValues的值的数量,将原始通道划分不同范围。
例如:
<span style="white-space:pre"></span><feFuncR type="discrete" tableValues="0.0 0.7 0.0 1.0" />原始红色通道别划分为4个范围: 0.00 -- 0.25 ,0.25 -- 0.50 , 0.50 -- 0.75,0.75 -- 1.00。
我们给出的值将通道划分为:0.00 -- 0.00,0.70 -- 0.70,0.00 -- 0.00,1.00 -- 1.00。
当输入值为0.375时,为原始通道第二个范围的值,因此对应到新的通道范围的第二个范围值:0.70,即为输出值。
w3c官方文档提供的计算方法为:
k/n <= C < (k+1)/n,则C' = vk,当C=1时,C' = vn-1。
linear:线性方式转换颜色数值。
参数:slope、intercept。
w3c官方文档提供的计算方法为:
C' = slope * C + intercept。
gamma:使用gamma函数进行颜色数值处理。
参数:amplitude,exponent,offset
w3c官方文档提供的计算方法为:
C' = amplitude * pow(C, exponent) + offset
示例代码、达到的效果请参阅参考文献。这里不贴了。
参考文献:http://www.w3.org/TR/SVG/filters.html#feComponentTransferElement
https://docs.webplatform.org/wiki/svg/elements/feComponentTransfer
- SVG滤镜:feComponentTransfer
- SVG滤镜
- SVG 滤镜与渐变
- svg滤镜效果
- SVG滤镜学习
- SVG滤镜:feColorMatrix
- SVG 滤镜(filter)
- SVG 滤镜
- SVG基础九:滤镜
- SVG图形绘制与滤镜
- svg初学——滤镜
- svg滤镜及动画效果
- svg滤镜, 更丰富的色彩魔法!!
- SVG滤镜各元素解释.1
- HTML5之SVG 2D入门10 - 滤镜
- 带你轻松打开svg滤镜的大门
- CSS3魔法堂:CSS3滤镜及Canvas、SVG和IE滤镜替代方案详解
- 滤镜
- 设置UITextField的内间距
- [问题记录]No known instance method for selector 'respondsToSelector:'
- 一起学android之自定义控件一起制作自定义标签(39)
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- android 网络编程 HttpGet类和HttpPost类使用详解
- SVG滤镜:feComponentTransfer
- iOS的三维透视投影
- DrawerLayout和SlidingMenu有什么区别
- IntelliJ IDEA 导入eclipse项目包及附属包
- hdfs 如何列出目录下的所有文件
- [问题记录]cString is deprecated :first deprecated in iOS 2.0
- Android Studio导入SlidingMenu
- 枚举应用案例
- gulp入门指南