我正在尝试进行一些原始像素操作,但在设置 alpha 通道时,在我的 Android 设备上看到了一些非常不一致的结果。这里是我看到的一些例子:
<canvas id='canvas' width='128' height='128'></canvas>
var ctx = $("#canvas")[0].getContext('2d');
var image = ctx.getImageData(0, 0, 128, 128);
var idx = 0;
for (var y=0; y < 128; ++y) {
for (var x=0; x < 128; ++x) {
image.data[idx+0] = 128;
image.data[idx+1] = 128;
image.data[idx+2] = 128;
image.data[idx+3] = (x+y);
idx += 4;
}
}
ctx.putImageData(image, 0, 0);
代码也可以在这里获得:http://jsfiddle.net/U3rwY/
以上代码的意图是创建一个从0到255逐渐增加阿尔法值的实心灰色正方形,因此我们应该看到一个从背景颜色到底部角落灰色渐变的正方形。在任何现代桌面浏览器上,我们确实可以看到这一点:
但在安卓设备上我们看到的是这个:
看起来它期望的是一个预先计算好的颜色,而不是我提供的128,128,128。这是正确的吗?如果是,有可靠的方法来检测哪些浏览器需要哪组值吗?