При записи пикселей в контекст HTML Canvas с помощью putImageData
я обнаруживаю, что значения пикселей не совсем совпадают, когда я их снова извлекаю. Я поставил тестовую страницу , показывая эту проблему. Свернувшись, проблема в том, что:
var id = someContext.getImageData(0,0,1,1);
id.data[0]=id.data[3]=64; // 25% red, 25% alpha
id.data[1]=id.data[2]=0; // No blue or green
someContext.putImageData(id,0,0);
var newData = someContext.getImageData(0,0,1,1);
console.log( newData.data[0] );
В Chrome v8 красное значение возвращается как 63
; на Firefox v3.6, Safari v5 и IE9 красное значение возвращается как 67
(все в Windows). В OS X Chrome v7, Safari v5 и Firefox v3.6 также возвращаются как 67
. Ни один из них не возвращается в качестве значения 64
, изначально заданного!
Использование setTimeout
для задержки между настройкой и повторной выборкой не имеет значения. Изменение фона страницы не имеет значения. Использование save()
и restore()
в контексте (за эта маловероятная статья) не имеет значения.