[英]Download the image returned by an API
我正在使用sportradar api。 我正在進行的api調用返回png圖像。 到目前為止,我已經做到了。
const apiCall = (url) => {
return axios.get(url).then((data) => {
if(data){
return Promise.resolve(data);
}
else{
return Promise.reject();
}
});
}
//all data in data.assetlist
for(let i=0; i<data.assetlist.length; i++){
let imageLink = data.assetlist[i].links[12].href;
let url = `https://api.sportradar.us/nfl-images-p3/ap_premium${imageLink}?api_key=${api_key}`;
apiCall(url).then((data) => {
console.log(data);
let blob = new Blob(data, {type: "image/png"}); // didn't compile with this line
});
}
上面的代碼工作正常,正在返回數據。 但是數據是奇怪的字符,如果我正確理解的話,是因為圖像是Blob類型,而且我正在獲取數據流。
我從這里參考並寫了這行
let blob = new Blob(data, {type: "image/png"});
我沒有嘗試過,因為恐怕數據量太大,可能會損壞我的系統(舊筆記本電腦)。 如果我做對了,我想知道如何將該Blob文件另存為png文件到我的系統中,否則我想知道如何將這些數據流轉換為圖像並可以下載並將其保存在本地目錄。
如果獲取的圖像已經是斑點,則可以使用以下庫下載該圖像: https : //github.com/eligrey/FileSaver.js
let FileSaver = require('file-saver');
FileSaver.saveAs(blob, "my_image.png");
我認為您不應該太擔心大小而已。
經過大量的研究,我找到了這種解決方案,並且有效。
apiCall(url).then((response) => {
response.data.pipe(fs.createWriteStream('test.jpg'));
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.