[英]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.