簡體   English   中英

使用 NodeJS 從圖像 url 獲取數據 url

[英]Get data url from an image url with NodeJS

我正在嘗試通過提供圖像 url 並返回 url 來獲取 nodejs 中的數據 url。我希望它能以承諾的方式完成並且一直在努力......主要是因為我在凌晨 5 點做這件事

An example of what I want returned is this: data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7

我需要它能夠接收 url 輸入、獲取圖像數據、轉換並返回它。

我一點運氣都沒有,有人有什么想法嗎?

我喜歡在尋求幫助后立即解決問題:這是我的解決方案; 從“請求”導入請求;

import request from "request";

const extTypeMap = {
  'png': 'image/png',
  'jpg': 'image/jpeg',
  'jpeg': 'image/jpeg',
  'webp': 'image/webp'
};

export const getImageDataUri = async (url: string): Promise<string> => {
  try {
    const stream = request(url),
      buffer = await new Promise((resolve, reject) => {
        const chunks: Buffer[] = [];
        stream.on("data", (chunk) => chunks.push(chunk));
        stream.on("end", () => resolve(Buffer.concat(chunks)));
        stream.on("error", reject);
      }) as any,
      dataUri = `data:${extTypeMap[url.split(".").pop()] || "image/png"};base64,${buffer.toString("base64")}`;

    return dataUri;
  } catch {
    return "";
  }
}

暫無
暫無

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

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