簡體   English   中英

如何使用node.js從http響應中獲取原始圖像

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

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