0

私は実際に各画像のデータを取得しようとしていますが、これを行うには、各画像をキャンバスに描画する必要があります。

ノード インタープリターは、イメージが完全に読み込まれていないと言っていますが、その理由はわかりません。

ctx.drawImage(img, 0, 0, img.width / 4, img.height / 4);
            ^
Error: Image given has not completed loading
    at Function.CheckIMG.LoadImage (C:\ ***\FindWrongImage.js:44:6)
    at C:\***\FindWrongImage.js:26:25
    at fs.js:271:14
    at Object.oncomplete (fs.js:107:15)

検索しても答えが見つからなかったので、誰かが私のプログラムの何が問題なのか知っていますか?ここに私のコードがあります:

var fs = require('fs');
var path = require('path');
var Canvas = require('canvas'), ImageCanvas = Canvas.Image;
var dir  = 'images/';

function CheckIMG() {}
module.exports = CheckIMG;

var img = new Canvas.Image;

CheckIMG.BrowseFolder = function() {
    fs.readdir(dir, function(err, files) {
        if (err) 
            throw err;
        files.forEach(function(file) 
        {   
            fs.readFile(dir + file, function(err, data) {
                if (err) 
                    throw err;
                var bool = CheckIMG.LoadImage(data);
                if (bool === false)
                    console.log("delete file")
                    //fs.unlinkSync(file);
            });
        });
    });
}


CheckIMG.LoadImage = function(data) {

    img.src = data;
    var canvas = new Canvas(img.width, img.height);
    var ctx = canvas.getContext('2d');

    ctx.drawImage(img, 0, 0, img.width / 4, img.height / 4);
    var imageData = ctx.getImageData(70, 50, img.Width, img.Height);
    console.log(imageData)
}
4

0 に答える 0