画布& Color-Thief图像索引大小

时间:2016-09-25 06:54:32

标签: javascript angularjs canvas color-thief

我正在使用color-thief来分析图像的颜色。我正在使用画布和getImageData,我在控制台中收到以下错误消息:

Error: Index or size is negative or greater than the allowed amount
CanvasImage.prototype.getImageData@http://localhost:3000/js/color-thief.js:51:12
ColorThief.prototype.getPalette@http://localhost:3000/js/color-thief.js:109:22
ColorThief.prototype.getColor@http://localhost:3000/js/color-thief.js:75:25
colorController/this.getColors@http://localhost:3000/js/ang.js:20:22

我不确定这是否是来自图像像素大小的画布问题,或者是否是另一个库中的某些错误(我也使用AngularJS)但是我被困住了,不知道我能做什么。

我认为像素计数为0时存在问题,当我将console.log行添加到color-thief.js中的以下代码时,对于某些图像,我得到“0 0”。

关键点 - > image.widthimage.height仅针对某些图片显示0,而其余部分则显示有意义的比例,如1280 922或2000 1333.

var CanvasImage = function (image) {
    this.canvas  = document.createElement('canvas');
    this.context = this.canvas.getContext('2d');

    document.body.appendChild(this.canvas);

    this.width  = this.canvas.width  = image.width;
    this.height = this.canvas.height = image.height;

    console.log(image.width, image.height);

    this.context.drawImage(image, 0, 0, this.width, this.height);
};

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

答案是将image.addEventListener("load", function() { ... }添加到代码中以正确加载图像。