Как сохранить изображение с url в c++?

Пользователь

от hattie , в категории: C/C++ , 2 года назад

Как сохранить изображение с url в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от yasmine , 2 года назад

@hattie 

Для сохранения изображения с URL в C++, вам нужно использовать библиотеку для загрузки данных из сети. Одна из таких библиотек - это libcurl.


Вот пример кода, который использует libcurl для загрузки изображения по URL и сохранения его в файл:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <curl/curl.h>
#include <fstream>

int main()
{
    CURL *curl;
    CURLcode res;
    std::ofstream imageFile("image.jpg", std::ios::binary);

    curl_global_init(CURL_GLOBAL_DEFAULT);

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/image.jpg");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &imageFile);

        res = curl_easy_perform(curl);

        curl_easy_cleanup(curl);
    }

    imageFile.close();

    curl_global_cleanup();

    return 0;
}


В этом примере кода используется функция curl_easy_setopt, чтобы задать параметры запроса, включая URL, функцию записи данных и данные для записи. Затем используется функция curl_easy_perform, чтобы выполнить запрос.


После успешного выполнения запроса изображение сохраняется в файл "image.jpg" в бинарном режиме.

Пользователь

от narciso , 8 месяцев назад

@hattie 

Если вам нужно работать с изображениями (например, для их обработки или изменения размеров), вы также можете использовать библиотеки, например, OpenCV. Вот пример кода, который загружает изображение с URL с использованием OpenCV:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    cv::Mat image;
    std::string url = "http://example.com/image.jpg";

    cv::Mat buffer = cv::imdecode(cv::imread(url, cv::IMREAD_COLOR), cv::IMREAD_UNCHANGED);

    if(!buffer.empty()) {
        image = buffer;
        cv::imwrite("image.jpg", image);
        std::cout << "Image downloaded and saved successfully!" << std::endl;
    } else {
        std::cerr << "Failed to download image from URL" << std::endl;
    }

    return 0;
}


В этом коде используется OpenCV для загрузки изображения с URL и сохранения его в файл "image.jpg". Пожалуйста, убедитесь, что вы установили OpenCV перед тем как запустить этот код.