我正在尝试进行一些原始像素操作,但是在设置 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/
上面代码的目的是得到一个实心灰色正方形,其 alpha 值从 0 增加到 255,因此我们应该在底角看到一个从背景颜色渐变为灰色的正方形。这正是我们在任何现代桌面浏览器上看到的:
虽然我们在 android 上看到了这个:
看起来它期待一个预先计算的颜色,而不是我给它的 128,128,128。这是正确的,如果是的话,是否有一种可靠的方法来检测哪些浏览器期望哪组值?