Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 1
Регистрация: 22.10.2013
Сообщений: 46
1

Сохранить картинку на диск

05.09.2014, 20:50. Показов 2049. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как сохранить картинку на диск имея её точный адрес? Желательно через CppWebBrowser.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2014, 20:50
Ответы с готовыми решениями:

Сохранить картинку вxml
Здравствуйте. Помогите примеров и советом, как решить мне такую задачу. Нужно сделать БД с...

Сохранить JPG картинку с нанесенными на нее объектами
Всем привет! :) Есть скрол бокс внутри которого карта района jpg( width 4682, height 5724)....

Как сохранить нарисованное в GDI на форме в картинку
Желательно наименее сложный способ

создать из нескольких картинок одну анимированую картинку и сохранить её
У меня вопрос, можно ли в С++ builder создать из нескольких картинок одну анимированую картинку и...

7
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
05.09.2014, 21:11 2
Используй TIdHTTP.

C++
1
2
3
4
5
6
    TIdHTTP * http = new TIdHTTP();
    TMemoryStream * MS = new TMemoryStream();
    http->Get("foto_url", MS);
    MS->SaveToFile("path_name");
    delete http;
    delete MS;
1
1 / 1 / 1
Регистрация: 22.10.2013
Сообщений: 46
05.09.2014, 22:18  [ТС] 3
Спасибо, работает, но вот так:
C++
1
2
3
4
TMemoryStream * MS = new TMemoryStream();
    IdHTTP1->Get("foto_url", MS);
    MS->SaveToFile("path_name");
    delete MS;
А через CppWebBrowser как-нибудь все таки можно?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32970 / 21283 / 8173
Регистрация: 22.10.2011
Сообщений: 36,556
Записей в блоге: 8
05.09.2014, 22:58 4
Basilas, ты хочешь из уже отрисованной странички выдрать изображения, что-ли? Дурью не майся, оно тебе надо? Вот посмотри на код, и подумай, зачем тебе это:
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TComInterface<IHTMLDocument2>pHTMLDocument2;
    if (SUCCEEDED(CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pHTMLDocument2)))
    {
        IHTMLElementCollection* Images = NULL;
        if (SUCCEEDED(pHTMLDocument2->get_images(&Images)) && Images)
        {
            long ImagesCount = 0;
            if (SUCCEEDED(Images->get_length(&ImagesCount)))
            {
                for (int i = 0; i < ImagesCount; i++)
                {
                    IHTMLImgElement* Image = NULL;
                    IDispatch* Disp = NULL;
                    Variant item = i;
                    Variant index = 0;
                    if (SUCCEEDED(Images->item(item, index, &Disp)) && Disp)
                    {
                        if (SUCCEEDED(Disp->QueryInterface(IID_IHTMLImgElement,
                            (void**)&Image)) && Image)
                        {
 
                            IHTMLElementRender *spElemRender;
                            HRESULT hr = Image->QueryInterface(IID_IHTMLElementRender, (void**)&spElemRender);
                            if (SUCCEEDED(hr) && spElemRender)
                            {
                                long bm_hei, bm_wid;
                                Image->get_width(&bm_wid);
                                Image->get_height(&bm_hei);
 
                                std::auto_ptr<TBitmap> bm(new TBitmap);
                                bm->SetSize(bm_wid, bm_hei);
                                spElemRender->DrawToDC(bm->Canvas->Handle);
                                bm->SaveToFile(String().sprintf(L"D:\\test\\data_00%d.bmp", i));
                            }
                            Image->Release();
                        }
                        Disp->Release();
                    }
                }
            }
            Images->Release();
        }
    }
}
(код сохранит все изображения со странички по указанным путям)
4
1 / 1 / 1
Регистрация: 22.10.2013
Сообщений: 46
06.09.2014, 14:21  [ТС] 5
Да, сложноватенько.
Просто задача стоит такая: на форме необходимо отображать страничку в браузере и её же код. Кроме того нужно вытащить картинку по ссылке с этой страницы. Я думаю, что тупо качать страницу сначала CppWebBrowser’ом, а потом ещё IdHTTP, тем более что тот же яндексмаркет так гораздо быстрее банит. Поэтому решил всё сделать через CppWebBrowser. Код страницы многие тоже предлагают вытаскивать целым небоскрёбом, но я нашёл вот такой вариант:
C++
1
CppWebBrowser1->OleObject.OlePropertyGet("Document").OlePropertyGet("Body").OlePropertyGet("InnerHtml");
Думаю, что и картинку можно скачать как-то попроще, но пока не знаю как.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32970 / 21283 / 8173
Регистрация: 22.10.2011
Сообщений: 36,556
Записей в блоге: 8
06.09.2014, 16:20 6
Картинку - нельзя, либо перерисовывать из уже отрендеренного содержимого браузера, как я показал, либо перекачивать заново.
1
1 / 1 / 1
Регистрация: 22.10.2013
Сообщений: 46
06.09.2014, 18:10  [ТС] 7
Нашел ещё один способ:
C++
1
URLDownloadToFile( 0, "http://data.com/123.jpg", "c:\\image.jpg", 0, 0);
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32970 / 21283 / 8173
Регистрация: 22.10.2011
Сообщений: 36,556
Записей в блоге: 8
06.09.2014, 19:52 8
Это то же самое перекачивание заново, никакого нового способа тут нет абсолютно.
1
06.09.2014, 19:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2014, 19:52
Помогаю со студенческими работами здесь

Как сохранить картинку в поле БД SQL?
Подскажите как произвести вставку картинки в БД SQL в поле тип image. картинку выбираю и...

Как сохранить картинку на диск
как мне сохранить картинку которая должна получиться (то что должно поучитьсяэто вложение с...

Взять картинку с сервера и сохранить её на диск
Доброго времени суток. Вопрос как получить с ya.ru картинку (логотип) и сохранить её на диск? ...

Сохранить измененную картинку
В PictureBox я добавляю картинку и кистью рисую по картинке и хочу ее сохранить, но не знаю как это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru