2015-01-15 4 views
0

Мой холст цвет 50 255 50 155. Когда я выполняю код:Почему функция возвращает неправильный цвет в холсте?

function getClickedAreaColor(x, y) { var data = ctx.getImageData(x, y, 1, 1).data, color = []; for (var i = 0; i < data.length; i++) { color.push(data[i]); } return color; }

Он возвращает 49 255 49 155 Почему это?

+0

Красный Зеленый Синий Альфа? – dwana

+0

Да. Я имею в виду RGBA – andrewgda

+0

, как вы его нарисовали? Здесь он отлично работает: http://jsfiddle.net/jtav1dm6/ – Luizgrs

ответ

1

Существует примечание в specs for the getImageData method для таких ситуаций:

В связи с потерями характера преобразования в и из предварительно умноженного альфа значения цвета, пиксели, которые только что были установлены с помощью putImageData() может быть возвращается к эквиваленту getImageData() как разные значения.

Это может объяснить, почему вы видите такую ​​разницу в

var canvas = document.getElementById("canvas"); 
var ctx = canvas.getContext("2d"); 
ctx.fillStyle="rgba(50, 255, 50, 0.607843137254902)" 
ctx.rect(0, 0, 100, 100); 
ctx.fill(); 

console.log(ctx.getImageData(0, 0, 1, 1).data); 

http://jsfiddle.net/jtav1dm6/2/

+0

Спасибо. Это верно. – andrewgda

Смежные вопросы