2017-09-02 82 views
-1

我使用curl庫相機做旋轉操作。重定向捲曲庫函數的輸出到圖像文件

以下是我迄今所做的:現在

#include <iostream>   // For std::cerr 
#include <string>   // For std::string,getline(),c_str() 

#include <curl/curl.h>  // For curl library functions like curl_easy_setopt,curl_easy_perform etc. 

class camera_image_rotate { 
    CURL *curl = curl_easy_init(); 
    std::string ipaddress,username,password,url; 
    int rotation; 
    CURLcode res; 
    public: 
    camera_image_rotate(int x) : rotation(x) { 
     std::cout<<"Enter ip address: "; 
     getline(std::cin,ipaddress); 
     std::cout<<"Enter username: ";  
     getline(std::cin,username); 
     username+=":"; 
     std::cout<<username<<'\n'; 
     std::cout<<"Enter password: "; 
     getline(std::cin,password); 
     password+="@"; 
     std::cout<<password<<'\n'; 
     ipaddress+="/axis-cgi/jpg/image.cgi?rotation="; 
     ipaddress+=std::to_string(rotation); 
     std::cout<<ipaddress<<'\n'; 
     url=username+password+ipaddress; 
    } 
    void rotate() { 
     if(curl) { 
      res=curl_easy_setopt(curl,CURLOPT_URL,url.c_str()); 
      res=curl_easy_perform(curl); 
      if(res!=CURLE_OK) 
       std::cerr<<"Oops, Invalid IP"; 
     } 
     else { 
      std::cerr<<"Something went wrong"; 
     } 
    } 
    ~camera_image_rotate() { 
     if(res==CURLE_OK) 
      curl_easy_cleanup(curl); 
    } 
}; 

int main() { 
    camera_image_rotate s(90); 
    s.rotate(); 
} 

,我所面臨的問題是,當我執行該程序嘗試打印在控制檯上的旋轉圖像,所以我完全得到一些 不可讀的輸出。所以,我想將此程序的輸出重定向到* .jpg或* .png文件。我如何實現這一目標?我在他們的官方網站上提到了關於CURL的文檔 ,但是我沒有找到任何有用的東西。

我使用Ubuntu OS &鐺++ 3.8.0編譯器。

+0

在本文檔中,沒有什麼關於與接收到的數據將被調用的回調?我確定有! –

+0

這是C例如https://stackoverflow.com/a/1636415/8491726我敢肯定,你就可以把它轉換爲C++使用流 –

回答

2

你可能尋找CURLOPT_WRITEFUNCTION回調被調用與下載的所有數據。 (一次一小片。)

在簡單的情況下,你還可以逃脫默認寫入功能,只需設置​​到一個文件中。

您還可以通過查看示例(如getinmemory.c) - 使用回調接收傳輸的全部內容到內存中,來了解回調的工作方式。