Как преобразовать массив в CanvasPixelArray ИЛИ создать объект CanvasPixelArray? - PullRequest
2 голосов
/ 22 января 2011

Я получил пиксельные данные изображения в PHP, которые я хотел бы перенести в Javascript.

Моя единственная проблема заключается в том, что PHP возвращает строку, которую я конвертирую в массиве Javascript, а ImageData.data не являетсяМассив, но CanvasPixelArray.

var cvsPixelAr = [arStrFromPHP];
var imgData = ctx.createImageData(dim[0], dim[1]);
imgData.data = cvsPixelAr;

Я также пытался "new CanvasPixelArray ();", но все равно ничего.

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 июня 2016

Для меня это работало довольно хорошо:

ctx.putImageData(
    new ImageData(someUintArray, width, height ),
    0,0
);

Не забывайте, что эта формула должна применяться:

someUintArray.length == width*height*4

Вам определенно не нужно копировать весь массив. Проверьте MDN документы по этой теме .

Вот пример, где я использую это, чтобы изменить размер изображения без DOM API, просто используя необработанные данные пикселей: https://jsfiddle.net/n3drn8v9/4/

0 голосов
/ 23 января 2011

Полагаю, вам придется копировать элементы по кусочкам в окончательный массив данных:

var imgData = ctx.createImageData(dim[0], dim[1]);
var d = imgData.data;
for (var i=0,len=d.length;i<len;++i) d[i] = cvsPixelAr[i];
...