簡體   English   中英

NodeJS將圖像流轉換為base64會提供無效數據

[英]NodeJS converting image stream to base64 gives invalid data

我正在嘗試生成QR碼,然后將其作為Base64編碼的數據URL返回。 我知道有一個模塊( https://github.com/cmanzana/qrcode-npm )應該可以直接執行此操作,但是我在安裝canvas模塊依賴項時遇到了麻煩。 我仍在這方面進行工作,但現在,我嘗試的解決方法是使用備用模塊生成圖像流,然后將其轉換為Base64。 這是我到目前為止的內容:

var qrBase64 = '';
var qrImg = qr.image(qrText, { type: 'png', ec_level: 'L' });

qrImg.on('readable', function () {
    qrBase64 += qrImg.read().toString('base64');
});

qrImg.on('end', function () {
    qrBase64 = "data:image/png;base64," + qrBase64;
    return res.json({
        success: true,
        qrBase64: qrBase64
    });
});

它的工作方式似乎是給了我一個類似於Base64編碼字符串的字符串。 但是,如果嘗試在瀏覽器中查看它,則會收到無效的URL錯誤。 如果我將qrImg管道qrImg到文件,然后使用在線工具將其轉換為Base64,則結果(有效且在瀏覽器中有效)與我的Node結果不匹配。

您需要一次對所有圖像數據進行base64編碼。 在base64編碼之前和之后串聯塊通常不會產生相同的結果。 看一下這個例子:

btoa("12" + "34")         -> "MTIzNA=="

btoa("12") + btoa("34")   -> "MTI=MzQ="

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM