Да, я знаю о .getImageData()
Я имею в виду, скажем, мне нужно изменить некоторые пиксели:
var imageData = ctx.getImageData(...);
Кажется, этот метод дает мне совершенно новую копию "настоящих" (спрятанных где-то глубоко от меня) изображений-данных. Я говорю это, потому что если вы создадите новый:
var imgData2 = ctx.getImageData(.../*same parameters as before*/);
и сравните два буфера:
imageData.data.buffer === imgData2.data.buffer; //false
Таким образом, каждый раз он создает новую копию из своего растрового изображения. Боже мой, почему? Хорошо, идем дальше:
/*...apply some new changes to the imageData in a loop...*/
Ничего особенного сверху. Но теперь пришло время вернуть это:
ctx.putImageData(imageData, ...);
И этот внутри себя запускает новый цикл и копирует мои данные изображения.
Столько дополнительной работы! Есть ли способ получить фактические данные изображения и манипулировать ими без получения/ввода? А если нет - еще раз спрашиваю - ПОЧЕМУ? Это из соображений безопасности? Чего они боятся, что я могу сделать с этими пикселями?
Благодарю вас!
getImageData
на холсте с этим изображением, нарисованным на нем, вы получите данные о пикселях. Если вы затем превратите эти двоичные значения обратно в символы, вы сможете хранить javascript внутри изображений. Вы можете нанести очень много вреда с помощью javascript, который трудно изучить. - person enhzflep   schedule 19.09.2015a === b
даже не относится к делу и не является вопросом, на который нужно было ответить. - person somethinghere   schedule 19.09.2015