canvas像素级操作实现滤镜之灰度效果、怀旧滤镜
2014-02-17 19:53
886 查看
灰度化原理:按照.299 * r + .587 * g + .114 * b来计算,然后将值赋给rgb分量
代码:
怀旧滤镜原理:
1.首先对图像重新计算RGB值,计算公式如下:
var dr=.393*r+.769*g+.189*b;
var dg=.349*r+.686*g+.168*b;
var db=.272*r+.534*g+.131*b;
2.对图像计算出来的新的RGB值根据随机权重与旧值混合,权重值公式如下:
var scale=Math.random()*0.5 + 0.5;
3.混合公式如下:var fr=scale*dr+(1-scale)*r;
实现:
代码:
//灰度效果:(去色) function gray_Filter(data) { for (i = 0; i < data.length - 4; i += 4) { //遍历各像素分量 .299 * r + .587 * g + .114 * b; var tmp = data[i] * 0.299 + data[i + 1] * 0.587 + data[i + 2] * 0.144; data[i] = data[i + 1] = data[i + 2] = tmp; } return data; }
怀旧滤镜原理:
1.首先对图像重新计算RGB值,计算公式如下:
var dr=.393*r+.769*g+.189*b;
var dg=.349*r+.686*g+.168*b;
var db=.272*r+.534*g+.131*b;
2.对图像计算出来的新的RGB值根据随机权重与旧值混合,权重值公式如下:
var scale=Math.random()*0.5 + 0.5;
3.混合公式如下:var fr=scale*dr+(1-scale)*r;
实现:
//怀旧滤镜: function reminiscence_Filter(data) { for (i = 0; i < data.length - 4; i += 4) { //遍历各像素分量 var dr = .393 * data[i] + .769 * data[i + 1] + .189 * data[i + 2]; var dg = .349 * data[i] + .686 * data[i + 1] + .168 * data[i + 2]; var db = .272 * data[i] + .534 * data[i + 1] + .131 * data[i + 2]; var scale = Math.random() * 0.5 + 0.5; data[i] = scale * dr + (1 - scale) * data[i]; scale = Math.random() * 0.5 + 0.5; data[i + 1] = scale * dg + (1 - scale) * data[i + 1]; scale = Math.random() * 0.5 + 0.5; data[i + 2] = scale * db + (1 - scale) * data[i + 2]; } return data; }
相关文章推荐
- 用canvas实现图片滤镜效果详解之灰度效果
- 用canvas实现图片滤镜效果详解之灰度效果
- 用canvas实现图片滤镜效果详解之灰度效果
- canvas像素级操作实现各种滤镜之高斯模糊
- canvas像素级操作实现滤镜之浮雕滤镜
- canvas像素级操作实现滤镜之反色滤镜、黑白滤镜
- canvas像素级操作实现滤镜之反色滤镜、黑白滤镜
- canvas像素级操作实现各种滤镜之高斯模糊
- canvas像素级操作实现滤镜之浮雕滤镜
- 用canvas实现图片滤镜效果详解之灰度效果
- canvas滤镜效果实现代码
- CSS+Canvas实现图片灰度效果,兼容所有浏览器
- 用canvas实现图片滤镜效果
- 用canvas实现图片滤镜效果附演示
- 用canvas实现图片滤镜效果
- HTML5利用Canvas绘制图形(使用图像、裁剪区域、使用文本。阴影效果和操作像素)
- 用canvas实现图片滤镜效果
- 用canvas实现图片滤镜效果详解之视频效果
- 用canvas实现图片滤镜效果详解之视频效果
- canvas 滤镜之灰度效果