[英]How to get original image from http response using node.js
我正在使用第三方服務來下載圖像,但是其響應主體包括html以及頂部的base64(不確定)圖像內容。 響應的內容類型為image/jpeg; charset=utf-8
image/jpeg; charset=utf-8
響應示例:
����JFIF``��C
$.' ",#(7),01444'9=82<.342��C
2!!22222222222222222222222222222222222222222222222222��"��
���}!1AQa"q2���#B��R��$3br�
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������
���w!1AQaq"2�B���� #3R�br�
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body onload="initslide('method1,method2,method3', '');">
// More html goes here
</body>
</html>
和服務電話:
var params = {
url : serviceUrl,
form : form,
headers : headers
};
request.post(params, function(error, response, body) {
if (error) {
console.error("Error:", error);
return;
}
callback(body); // In body i am getting above response
});
現在,我只想下載它的圖像部分並將其以png / jpeg格式保存在雲中。 任何想法如何在node.js中實現。
我認為我們可以假設圖像不包含序列\\n\\n<!
所以讓我們分開。
var parts = body.split('\n\n<!')
現在第一部分應該包含我們的形象
var imageData = new Buffer(parts[0], 'binary');
所以我們可以將其保存到文件中
//I'm just assuming jpg for now
fs.writeFile('out.jpg', imageData, cb);
可以做更多的工作來解釋文件類型並使其更可靠,但這是其背后的基本思想。
或者,您可以將整個文件讀入緩沖區,並在JPEG( FFD9
)中查找圖像序列的末尾,它將告訴您圖像何時開始以及html結束。
var data = new Buffer(body, 'binary');
for(var i=0; i<data.length; i++){
if(data[i] === 0xff && data[i+1] === 0xd9){
//end of file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.