【发布时间】:2016-10-28 15:39:28
【问题描述】:
我想将图像转换为可变数量的灰度,该数量可由用户配置,范围从 2(单色/黑白)到 256(全灰度)。
我尝试使用 css 和 svg 过滤器来完成此操作,例如在 CSS 中:
filter: grayscale(100%)
将图像转换为灰度,这是我想要的 256 灰度但其他值,例如
filter: grayscale(10%)
不限制灰度的数量,而只是减少图片中使用的颜色数量,所以使用这些滤镜我永远无法得到单色的结果。
感谢您的帮助。
【问题讨论】:
-
您可以先获取图像,然后将其绘制在画布上,并逐个访问其像素的 RGB 值。然后将使用公式
Y = 0.299*R + 0.587*G + 0.114*B计算 Y(亮度)并将计算出的 Y 插入到每个像素的 R、G 和 B 的位置。 -
供将来参考,您尝试实现的这种技术称为“量化”,如下面的答案所述。
标签: javascript css svg svg-filters