首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getImageData()返回全0

getImageData()返回全0
EN

Stack Overflow用户
提问于 2015-05-27 21:57:52
回答 1查看 2K关注 0票数 2

所以,我有一个这样的函数:

代码语言:javascript
复制
var getRGBArray = function (img) {
    // create the canvas we need to work with 
    var canvas = document.createElement('canvas');

    // get the canvas context
    var context = canvas.getContext("2d");

    // will store the image data and the returned array
    var imgData, rgbArray = [];

    // make sure that the width and height are correct
    context.canvas.width = img.naturalWidth;
    context.canvas.height = img.naturalHeight;

    // draw the image
    context.drawImage(img, img.naturalWidth, img.naturalHeight);

    // get the image data 
    imgData = context.getImageData(0, 0, img.naturalWidth, img.naturalHeight);

    // imgData contains r,g,b,alpha values. We skip
    // the alpha value. 
    for (var i = 0, n = 0; i < imgData.data.length; i+=4, n+=3) {
        rgbArray[n] = imgData.data[i];
        rgbArray[n+1] = imgData.data[i+1];
        rgbArray[n+2] = imgData.data[i+2];

        // imgData.data[i+3] is the alpha channel. We ignore it. 
    }
    return rgbArray;
};

它只是获取一张图像,并返回一个像[r0, g0, b0, r1, g1, b1, ..., rn, gn, bn]一样设置的数组。

首先,返回的数组是完全空的,这显然是一个问题。

其次,当我在Firefox的控制台窗口中输入所有这些内容时,imgData数组的长度是合理的,但是所有的数据都是0!没有一个值是未定义的,我有一个简单的网页,我正在调试。网页已经加载了图像,而我只是使用document.getElementById('testImage')获取图像。

有人能给我解释一下为什么会这样吗?

编辑:这不同于this,因为我想知道为什么drawImage()要给我一个全是0的数据数组,他们要求的是完全不同的东西。

EN

回答 1

Stack Overflow用户

发布于 2015-05-27 22:26:52

我找到问题了。在context.drawImage()中,我没有在开始位置传球。修复方法是将其更改为:context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight)。谢谢你的帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30484702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档