JavaScript холст putImageData не записывает измененные данные - PullRequest
2 голосов
/ 02 декабря 2009

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

Я выполнил все указания, чтобы сделать

context.putImageData(imagedata,0,0);

Я делаю это, но данные изображения не меняются. «ctx» - это контекст изображения, которое было загружено ранее и которое становится серым.

    greyscale: function grayscale(ctx){

        var id = ctx.getImageData(0,0, ctx.canvas.width, ctx.canvas.height);

        for(var i=0; i<id.height; i++){
            for(var e=0; i<id.width; i++){

                var index = (e*4)*id.width+(i*4);

                var avg = (id.data[index] + id.data[index+1] + id.data[index+2]) / 3

                id.data[index] = avg;     
                id.data[index+1] = avg;
                id.data[index+2] = avg;
            }
        }

        ctx.putImageData(id,0,0);

    }

Ответы [ 3 ]

1 голос
/ 02 декабря 2009

Ваш внутренний цикл сравнивает и увеличивает i вместо e.

У вас также есть e и я, когда вы рассчитываете индекс. Должно быть (с учетом 4 фактора):

var index = 4 * (i*id.width + e);
0 голосов
/ 13 июля 2010

проблема здесь:

for(var e=0; i<id.width; i++){

ваше "е" не поднимается

0 голосов
/ 02 декабря 2009

Может быть, не тот ответ, который вы ищете, но вы смотрели на flot.js? Хорошие функции построения графиков и исходный код доступны для прочтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...