我想从一些图片中获取像素并将它们作为数组返回。我使用https://www.npmjs.com/package/jimp处理图像。Jimp有一个异步函数
当我运行这段代码时,我会收到一个包含两个项目的数组(因为我提供了两张图片)。这两个项目都是
为什么它会返回一个promise而不是解决它?我是否需要等待每个函数和整个模块...?
jimp.read(filePath)
,需要使用await进行处理。我的图像读取器模块:const config = require('./configuration.json');
const fs = require('fs');
const path = require('path');
const jimp = require('jimp');
module.exports = readImages;
function readImages() { // Reads the image files and extracts the colors
const files = getFilesFromDirectory();
const imageFiles = filterForImageFiles(files);
return getInformationFromImageFiles(imageFiles);
}
function getFilesFromDirectory() { // Reads all the files from the directory provided from the configuration file
return fs.readdirSync(config.dirPath);
}
function filterForImageFiles(files) { // Filters an array of files for .png and .jpg files
return files.filter(file => {
const fileExtension = path.extname(file);
const isPngFile = fileExtension === '.jpg';
const isJpgFile = fileExtension === '.png';
return isPngFile || isJpgFile;
});
}
function getInformationFromImageFiles(imageFiles) { // Maps image files to image information
return imageFiles.map(imageFile => getInformationFromImageFile(imageFile));
}
async function getInformationFromImageFile(imageFile) { // Extracts information from an image file
const filePath = path.join(config.dirPath, imageFile);
const image = await jimp.read(filePath);
return getColorsFromImage(image);
}
function getColorsFromImage(image) { // Extracts the colors from an image file
const { width, height } = image.bitmap;
const colors = [,];
for (let x = 0; x < width; x++) {
for (let y = 0; y < height; y++) {
const intColor = image.getPixelColor(x, y);
const rgbaColor = jimp.intToRGBA(intColor);
colors[x, y] = rgbaColor;
}
}
return colors;
}
当我运行这段代码时,我会收到一个包含两个项目的数组(因为我提供了两张图片)。这两个项目都是
Promise { <pending> }
。请查看getInformationFromImageFile
,它是一个异步函数,等待jimp reader完成。为什么它会返回一个promise而不是解决它?我是否需要等待每个函数和整个模块...?
await jimp.read(filePath)
是有效的,它正在等待调用得到解决。但是,在getInformationFromImageFiles
中你没有等待调用getInformationFromImageFile(imageFile)
的返回。 - Olian04readImages
返回什么? - Mark