В настоящее время я пытаюсь создать страницу с динамически генерируемыми изображениями, которые не являются фигурами, нарисованными на холсте для создания анимации.
Первое, что я попробовал, было следующее:
//create plenty of those:
var imageArray = ctx.createImageData(0,0,16,8);
//fill them with RGBA values...
//then draw them
ctx.putImageData(imageArray,x,y);
Проблема в том, что изображения перекрываются и что putImageData
просто ... помещает данные в контекст, без учета альфа-канала, как указано в w3c:
пикселей на холсте заменяются оптом, без композиции, альфа-смешения, без теней и т. Д.
Итак, я подумал, ну как я могу использовать Image
с, а не ImageData
с?
Я пытался найти способ на самом деле поместить объект ImageData
обратно в изображение, но, похоже, его можно поместить только в контекст холста. Итак, в крайнем случае, я попытался использовать toDataURL()
метод холста 16x8 (размер моих изображений) и прикрепить результат как src
моих ~ 600 изображений.
Результат был прекрасным, но он потреблял 100% моего процессора ... (чего не было с putImageData
, ~ 5% процессора). Я предполагаю, что по неизвестной причине изображение перезагружается * URI данных image/png
каждый раз, когда он рисуется ... но это было бы странно ... нет? Похоже, что он занимает гораздо больше оперативной памяти, чем моя предыдущая техника.
Итак, в результате я понятия не имею, как достичь своей цели.
Как я могу динамически создавать альфа-каналы изображений в javascript и затем рисовать их с заметной скоростью на холсте?
Является ли единственной реальной альтернативой использование Java-апплета?
Спасибо за ваше время.