我想知道是否有方法在HTML5 Canvas元素中更改图像的颜色深度,因为图像中每个像素的颜色将“圆整”到最近例如,相当于较小的颜色位深度。谢谢。更改Html5画布元素的颜色深度
回答
是的,它可以完成,并不是太困难。看到这里我的答案:How can I use a gradient map to tone a HTML5 canvas with an image in the canvas.
就像在着色,只是你必须做的就是去在每个像素变化的RGB值是较小(共8个步骤或16,而不是的步骤:1)
所以你可以做的8个步骤:
redValue = redValue - (redValue % 32) // 155 would become 128, etc
哪应该工作,但你应该检查边缘情况。
例子:
+1更简单的公式。我想的太复杂了。 – pimvdb
太棒了;这是非常有用的。尽管问题很快;默认情况下,画布的颜色深度为32位;所以你在这个例子中将它降低到32/4 = 8位深度?还是我错误地思考它?再次感谢! – KeithComito
您可以使用getImageData
遍历每种颜色的每个字节,因此您可以将一些数学函数应用到例如代表8-bit colors:http://jsfiddle.net/pimvdb/eGjak/191/。
var imgdata = ctx.getImageData(0, 0, 400, 400); // get data
var data = imgdata.data; // bytes
// 8-bit: rrr ggg bb
for(var i = 0; i < data.length; i += 4) {
data[i] = nearest(data[i], 8); // set value to nearest of 8 possibilities
data[i + 1] = nearest(data[i + 1], 8);
data[i + 2] = nearest(data[i + 2], 4);
}
ctx.putImageData(imgdata, 0, 0); // put image data to canvas
function nearest(x, a) { // will round down to nearest of a possibilities
// in the range 0 <= x <= 255
return Math.floor(x/(255/a)) * (255/a);
}
好的;这正是我所想的。我有点希望在那里有一些预定义的功能,比如“改变颜色深度”......猜这是一厢情愿的想法,呃? – KeithComito
@ user201926:对不起,错过了一些...设置为黑/白。编辑:这应该是更好,我希望。 – pimvdb
我不认为有内置在制定这个。但是,您应该能够将每个像素通道值减少到更有限的一组值。例如:
var ctx, width, height;
var factor = 8;
var pixels = ctx.getImageData(0, 0, width, height).data;
function reduce(val) {
return Math.round(val/factor)*factor;
}
for(var i = 0, l = pixels.length; i < l; i+=4) {
pixels[i] = reduce(pixels[i]);
pixels[i+1] = reduce(pixels[i+1]);
pixels[i+2] = reduce(pixels[i+2]);
}
ctx.putImageData(pixels, 0, 0)
- 1. HTML5画布 - 更改颜色
- 2. HTML5画布颜色
- 3. 更改画布颜色Android
- 4. 更改画布元素颜色的默认值
- 5. 像素深度与颜色深度
- 6. HTML5画布颜色文本
- 7. html5进度元素的动画背景颜色
- 8. 选择并更改html5画布中的一条线的颜色?
- 9. 更改HTML5画布中形状的颜色
- 10. 画布 - 使用HTML5/CSS/JS更改图像的颜色?
- 11. 悬停以更改画布的颜色
- 12. HTML5画布文字缩放,旋转和更改颜色
- 13. 如何更改SoundCloud Mini HTML5播放器中的元素颜色
- 14. 如何使用jquery更改html5 canvas元素的颜色?
- 15. 更改画布颜色触摸
- 16. 打印HTML5画布元素
- 17. HTML5画布元素样式?
- 18. 了解HTML5画布元素
- 19. 移动HTML5画布元素
- 20. 定位HTML5画布元素
- 21. 更改画布中像素的颜色,Tkinter,Python
- 22. html5画布:按颜色剪辑
- 23. 反转颜色HTML5画布教程
- 24. html5画布包含颜色选择
- 25. 更改元素的颜色Chrome扩展
- 26. 更改UserControl元素的颜色
- 27. 更改每n元素的颜色
- 28. 更改悬停元素的颜色?
- 29. 更改元素的背景颜色?
- 30. 如何更改MFMessageComposeViewController元素的颜色?
难道这不仅仅依赖于用户的屏幕设置吗? – feeela
我其实想把它做成图像数据来创建一个“低雷兹”效果。 – KeithComito