c++ http 获取图片保存
时间: 2023-08-13 12:06:50 浏览: 236
在C++中,你可以使用第三方库来进行HTTP请求和图片保存。一个常用的库是cURL库,它提供了HTTP请求的功能。以下是一个使用cURL库获取图片并保存的示例代码:
```cpp
#include <iostream>
#include <fstream>
#include <curl/curl.h>
// 回调函数,用于将获取到的图片数据写入文件
size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) {
std::ofstream* file = static_cast<std::ofstream*>(userp);
file->write(static_cast<char*>(contents), size * nmemb);
return size * nmemb;
}
int main() {
CURL* curl;
CURLcode res;
// 初始化cURL
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if (curl) {
// 设置要请求的图片URL
const char* url = "https://example.com/image.jpg";
// 打开文件以保存图片数据
std::ofstream file("image.jpg", std::ios::binary);
// 设置cURL选项
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &file);
// 执行HTTP请求
res = curl_easy_perform(curl);
// 检查是否请求成功
if (res != CURLE_OK) {
std::cerr << "Failed to download image: " << curl_easy_strerror(res) << std::endl;
}
// 关闭文件
file.close();
// 清理cURL资源
curl_easy_cleanup(curl);
}
// 清理cURL全局资源
curl_global_cleanup();
return 0;
}
```
上述代码使用cURL库发送GET请求,并将获取到的图片数据写入到名为"image.jpg"的文件中。你可以根据需要修改保存的文件名和路径。
请确保你已经安装了cURL库,并在编译时链接相应的库文件。编译时需要添加"-lcurl"参数,例如:
```
g++ main.cpp -o main -lcurl
```
这样就可以编译并运行上述代码来获取并保存图片数据了。
阅读全文