【问题标题】:In Node.js, why isn't my PNG file read correctly?在 Node.js 中,为什么我的 PNG 文件无法正确读取?
【发布时间】:2019-02-10 14:30:15
【问题描述】:

我正在尝试使用以下软件包:

https://github.com/photopea/UPNG.js/

以下图片:

我的代码如下:

const fs = require("fs");
const png = require("upng-js");

async function run() {
    try {
        const data = png.decode(await fs.readFile("./qr.png"));
    } catch (err) {
        console.error(err);
    }
}

run();

这给了我以下错误信息:

The input is not a PNG file!

为什么我的 PNG 文件没有被正确读取?

【问题讨论】:

  • fs.readFile 不返回承诺。所以等待它没有任何效果。

标签: node.js png


【解决方案1】:

您可以使用 readFileSync 代替 readFile 或承诺 readFile 方法

const fs = require("fs");
const png = require("upng-js");
const Promise = require('bluebird');

async function run() {
    try {
        const data = png.decode(await Promise.promisify(fs.readFile)("./qr.png"));
    } catch (err) {
        console.error(err);
    }
}

run();

【讨论】:

    【解决方案2】:

    使用回调等待文件

    const fs = require("fs");
    const png = require("upng-js");
    
    async function run() {
        try {
            fs.readFile("./qr.png", function(err,content){
                if(!err) {
                    const data = png.decode(content);
                }
            });
        } catch (err) {
            console.error(err);
        }
    }
    
    run();
    

    【讨论】:

      猜你喜欢
      • 2018-09-10
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多