getImageData(), putImageData() не работает на Nexus 4, используя Cocoonjs canvas+

Я пишу небольшую демонстрационную программу для тестирования canvas+ performance. Но getImageData(), putImageData(), похоже, не работают. Оставляет черный квадрат на холсте. Половина размера по ширине и высоте, конечно, учитывая window.devicePixelRatio, равна 2, что-то несовместимое должно где-то существовать. Программа отлично работает в браузере Chrome. Но не будет работать с помощью программы запуска Cocoonjs 2.1.1.

Код:

I 'm using requestAnimationFrame(loop);

ctx.drawImage(origin_img,0,0,410, 180, 0, 0, width, height);
texture = ctx.getImageData(0,0,width,height);

loop{
ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height);
ctx.fillStyle = 'red';
ctx.fillRect(0,0,width, height);
ctx.putImageData(texture, 0, 0);

}

Результат: я вижу красный прямоугольник с черным прямоугольником размером 1/4 над ним. Кто-нибудь может мне помочь с этим?

ctx.drawImage () будет работать в программе.

==============================

Спасибо обоим! Я разместил свой код на
http://spikeyang.boxshell.com/static/js/src.zip

Пожалуйста, нажмите на третью ссылку, water_ripple, чтобы увидеть результат. Пожалуйста, нажмите верхнюю правую кнопку, чтобы вернуться на главную страницу. Основной файл js - это js/demo.js. Основной функцией является waterRippleLoop(). Я пытаюсь немного кода симуляции водной ряби.

2 ответа

В прошлом я использовал getImageData и putImageData, и они отлично работали в Canvas+. Некоторые вопросы:

1.- Вы тестировали его на другом устройстве Android (или устройстве iOS) с помощью Canvas + и работало ли оно? 2.- Не могли бы вы предоставить весь пример исходного кода? Чем проще, тем лучше.

С уважением, Икер.

Я исследовал проблему немного дальше и не получил работать в 2.1 в любом случае. Тем не менее, как вы сказали, он работает как шарм с обычными браузерами, такими как Chrome.

Поэтому я предполагаю, что это ошибка в последней версии cooconjs, и я создам отчет об ошибках, чтобы получить больше информации о проблеме.

Чтобы прояснить ситуацию, я создал очень маленький контрольный пример, чтобы показать проблему: https://www.dropbox.com/s/j9zbjzhijxjxk54/test_case.zip?dl=0

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

Обычный браузер (хром): https://www.dropbox.com/s/782akzq2cguek2j/photo_2015-05-21_20-43-05.jpg?dl=0

Coocon (только одно изображение): https://www.dropbox.com/s/j20qnti0y3rw0gt/photo_2015-05-21_20-43-10.jpg?dl=0

Другие вопросы по тегам