簡體   English   中英

如何將遠程圖像讀取到 base64 數據 url

[英]How to read remote image to a base64 data url

其實這個問題有很多答案。 但我的問題是,我想用 5 個外部(URL)圖像動態生成 pdf。 我正在使用 PDFmake 節點模塊。 它僅支持本地和 base64 格式兩種方式。 但我不想在本地存儲圖像。 所以我的要求是一個以 url 作為參數並返回 base64 的函數。 這樣我就可以存儲在全局變量中並創建 pdf

提前致謝

function urlToBase(URL){
return base64;
}

var img = urlToBase('https://unsplash.com/photos/MVx3Y17umaE');
var dd = {
            content: [
              {
                text: 'fjfajhal'
              },
              {
                image: img,
              }
            ]
          };

          var writeStream = fs.createWriteStream('myPdf.pdf');
        var pdfDoc = printer.createPdfKitDocument(dd);
        pdfDoc.pipe(writeStream);
        pdfDoc.end();

我正在使用 npm 中的 PDFmake 模塊

遠程圖像的內容可以首先通過 HTTP 請求獲取,例如使用無處不在的request npm 模塊。 然后可以將圖像字符串內容轉換為buffer ,最后轉換為 base64 字符串。 要完成轉換,請在 base64 字符串的開頭添加適當的data-url 前綴,例如data:image/png,base64,

以下是 PNG 圖像的粗略示例:

const request = require('request-promise-native');

let jpgDataUrlPrefix = 'data:image/png;base64,';
let imageUrl         = 'https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png';

request({
    url: imageUrl,
    method: 'GET',
    encoding: null // This is actually important, or the image string will be encoded to the default encoding
})
    .then(result => {
        let imageBuffer  = Buffer.from(result);
        let imageBase64  = imageBuffer.toString('base64');
        let imageDataUrl = jpgDataUrlPrefix+imageBase64;

        console.log(imageDataUrl);
    });

暫無
暫無

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

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