Доброго времени суток. Есть такой старый баг на андроид устройствах
https://code.google.com/p/android/issues/detail?id... В общем, если изменить цвет изображения с помощью методов getImageData() и putImageData() то полученный результат не равен ожидаемому результату.
var imgCanvas = document.createElement("canvas");
var ctx = imgCanvas.getContext("2d");
var imageObj.src = 'img/someImage.png';
imageObj.onload = function(){
ctx.draw(imageObj,0,0);
var imageData = ctx.getImageData(0,0,30,30);
var data = imageData.data;
for(var i = 0, n = data.length; i < n; i += 4) {
data[i]+=20;//red
data[i+1]-=20;//green
data[i+2]-=20;//blue
//data[i+3]=0; //alpha, но я не трогаю этого параметра
}
ctx.putImageData(imageData,0,0);
}
Если начальные параметры случайного пикселя были, допустим rgba = [100,50,200,200], то после применения этих изменений ожидается результат rgba = [120,30,180,200], однако в браузере андроида результат совсем другой. Я разрабатываю приложение на html5 и для сборки использую Phonegap, результат тот же, что и в браузере андроида. В хроме для андроида все работает нормально.
Поскольку я должен закончить разработку совсем скоро, и приложение должно работать в устройствах андроида 4.х+, то я хотел бы знать, как совершать те же действия но без применения putImageData()? Или какие у вас будут советы по этому поводу? Спасибо.