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