Форум программистов, компьютерный форум CyberForum.ru

Скопировать изображение из интернете - C++

Восстановить пароль Регистрация
 
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
21.10.2013, 14:18     Скопировать изображение из интернете #1
Здорова господа!!!

Есть изображение, которое находится по адресу: http://upload.wikimedia.org/wikipedi..._diversity.png .

Мне нужно его скопировать себе на диск.
Вот пытаюсь его скопировать с помощью файловых потоков, но ничего не получается, вот код:
C++
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
30
31
32
#include <cstdio>
#include <iostream>
using std::cout;
using std::endl;
#include <fstream>
using std::ofstream;
using std::ifstream;
 
//подключаем curl
#include "curl/curl.h"
#pragma comment(lib,"curllib.lib")
 
int main()
{
    ifstream ifs("http://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Animal_diversity.png/265px-Animal_diversity.png",ifstream::in|ifstream::binary);
    if(!ifs)
    {
        cout <<"don't open file"<<endl;
        exit(1);
    }
 
    ofstream ofs("265px-Animal_diversity.png",ofstream::out|ofstream::binary);
    if(!ofs)
    {
        cout <<"don't open file2"<<endl;
        exit(1);
    }
 
    ofs <<ifs.rdbuf()<<endl;
    
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2013, 14:18     Скопировать изображение из интернете
Посмотрите здесь:

C++ соединение с файлом в интернете
скопировать ф-ю C++
C++ С++ в интернете
Где в интернете найти толковый учебник по VC++? C++
C++ Как узнать, что ты уже в интернете, функция InternetGetConnectedState().
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
21.10.2013, 14:20     Скопировать изображение из интернете #2
ninja2, А причем тут файловые потоки? И зачем подключен curl, если он не используется? Загружаем данные с адреса, сохраняем в файл, PROFIT.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
21.10.2013, 14:21  [ТС]     Скопировать изображение из интернете #3
Как скопировать изображение из интернета? Например в пхп функции которыми копировались файлы ими можно было и изображения из интернета копировать, если не ошибаюсь, а тут так не работает.
0x10
21.10.2013, 14:22
  #4

Не по теме:

При этом в соседней теме:

Цитата Сообщение от ninja2 Посмотреть сообщение
Ну я от глубок в познаниях

ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
21.10.2013, 14:22     Скопировать изображение из интернете #5
ninja2, А для этого уже надо изучать язык. Если взяли curl - им и пользуйтесь. Аналогично, есть разные библиотеки для этого (в стандарте функций для работы с сетью нету).
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
21.10.2013, 14:48  [ТС]     Скопировать изображение из интернете #6
Цитата Сообщение от ForEveR Посмотреть сообщение
А причем тут файловые потоки?
В Пхп можно было функцией copy копировать отовсюду файлы, хоть с диска хоть с интернета, с любого адреса.
Цитата Сообщение от ForEveR Посмотреть сообщение
И зачем подключен curl, если он не используется?
Да это проект для теста. А как мне с помощью curl копировать картинку???

Добавлено через 1 минуту
Ладно щас попробую.

Добавлено через 15 минут
О скопировало, изображения токо в бинарном режиме копируются.

Добавлено через 6 минут
От простой код:
C++
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <string>
using std::string;
#include <iostream>
using std::cout;
using std::endl;
#include <fstream>
using std::ofstream;
 
//подключаем curl
#include "curl/curl.h"
#pragma comment(lib,"curllib.lib")
 
//создаем функцию для записи
static size_t my_fun(char* ptr,size_t size, size_t nmemb, string* str)
{
    if(str)
    {
        //размещает в блоке памяти размером size*nmemb данные из ptr (видимо)
        str->append(ptr,size*nmemb);
        return size*nmemb;
    }
    else
        return 0;//ошибка
}
 
int main()
{
    CURL* curl;
    CURLcode res;
 
    string content;
    curl=curl_easy_init();
    if(curl)
    {
        curl_easy_setopt(curl,CURLOPT_URL,"http://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Animal_diversity.png/265px-Animal_diversity.png");
 
        curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,my_fun);
        curl_easy_setopt(curl,CURLOPT_WRITEDATA,&content);
 
        res=curl_easy_perform(curl);
        if(res==CURLE_OK)cout <<"\nDone!"<<endl;
        else
            cout <<"curl_easy_perform failed: "<<curl_easy_strerror(res)<<endl;
 
        curl_easy_cleanup(curl);
    }
 
    ofstream ofs("img.png",ofstream::out|ofstream::binary);
    ofs <<content;
 
    getchar();
 
    return 0;
}
Yandex
Объявления
21.10.2013, 14:48     Скопировать изображение из интернете
Ответ Создать тему
Опции темы

Текущее время: 05:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru