【发布时间】:2016-04-29 04:46:56
【问题描述】:
我正在尝试使用 javascript 和画布读取图像中的 alpha 值,但 getImageData 返回的 ImageData 的 alpha 部分始终为 255,即使处理后的图像仅包含透明像素。这就是我所做的:
var img = new Image();
img.src = "url/to/an/image/with/transparency";
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
context.drawImage(img, 0, 0);
var data = context.getImageData(0, 0, img.width, img.height).data;
for(var i = 0; i<data.length; i+=4){
console.log(data[i+3]);
}
这总是输出 255。我已经找到了,但它并没有真正帮助我: newbie keeps losing alpha values in canvas
不管我怎么尝试,它都行不通。
编辑:这是我的完整代码:http://pastebin.com/3giQCWvP
错误发生在 generateCollisionGrid() 函数内部。我发现红色和绿色也总是 255。
这是我用来测试的图片:https://addons.opera.com/media/extensions/03/1303/1.4-rev1/icons/icon_64x64.png
【问题讨论】:
-
while循环是怎么回事,你已经有一个处理图像何时加载的处理程序? -
while(!ready){}=> 无限循环? -
@adeneo 谢谢,我忘了我从我的代码中删除了这部分。
标签: javascript canvas