GetImageData возвращает несколько случайных нулей из ниоткуда - PullRequest
0 голосов
/ 16 апреля 2020

Я создаю расширение chrome, которое может считывать rgb изображений веб-страниц в отдельные массивы. Однако в середине каждого массива есть несколько нулей из ниоткуда (хотя показания rgb первых нескольких пикселей верны). Подозрительные 0с . Все размеры моего изображения (w: 199; H: 252), и я только что обнаружил, что 198 изображений RGB обычно отображаются в imagedata, но затем за ним следует 252 0s. Чувствую, что я все правильно сделал. Может кто-нибудь помочь мне разобраться в проблеме?

function readImage(image) {

    var img = new Image();
    img.onload = function () {
        var c = document.createElement('canvas');
        c.height = image.naturalHeight;
        c.width = image.naturalWidth;
        var ctx = c.getContext('2d');
        ctx.drawImage(img, 0, 0);
        console.log("height : " + c.height + "weight: " + c.width);
        var imageData = ctx.getImageData(0, 0, c.height, c.width);
        var pix = imageData.data;
        for (var i = 0, n = pix.length; i < n; i += 4) {
            var alpha = pix[i + 3];
            pix[i + 3] = pix[i + 2];
            pix[i + 2] = pix[i + 1];
            pix[i + 1] = pix[i];
            pix[i] = alpha;
        }      
        console.log("imgaeData = " +pix);
        console.log("raw buffer length= " + pix.length);       
    }
    img.src = image.src;
}
...