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

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

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

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

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

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

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

7
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
05.09.2014, 21:11
Используй 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  [ТС]
Спасибо, работает, но вот так:
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
 Аватар для volvo
33414 / 21523 / 8237
Регистрация: 22.10.2011
Сообщений: 36,923
Записей в блоге: 12
05.09.2014, 22:58
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  [ТС]
Да, сложноватенько.
Просто задача стоит такая: на форме необходимо отображать страничку в браузере и её же код. Кроме того нужно вытащить картинку по ссылке с этой страницы. Я думаю, что тупо качать страницу сначала CppWebBrowser’ом, а потом ещё IdHTTP, тем более что тот же яндексмаркет так гораздо быстрее банит. Поэтому решил всё сделать через CppWebBrowser. Код страницы многие тоже предлагают вытаскивать целым небоскрёбом, но я нашёл вот такой вариант:
C++
1
CppWebBrowser1->OleObject.OlePropertyGet("Document").OlePropertyGet("Body").OlePropertyGet("InnerHtml");
Думаю, что и картинку можно скачать как-то попроще, но пока не знаю как.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33414 / 21523 / 8237
Регистрация: 22.10.2011
Сообщений: 36,923
Записей в блоге: 12
06.09.2014, 16:20
Картинку - нельзя, либо перерисовывать из уже отрендеренного содержимого браузера, как я показал, либо перекачивать заново.
1
1 / 1 / 1
Регистрация: 22.10.2013
Сообщений: 46
06.09.2014, 18:10  [ТС]
Нашел ещё один способ:
C++
1
URLDownloadToFile( 0, "http://data.com/123.jpg", "c:\\image.jpg", 0, 0);
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33414 / 21523 / 8237
Регистрация: 22.10.2011
Сообщений: 36,923
Записей в блоге: 12
06.09.2014, 19:52
Это то же самое перекачивание заново, никакого нового способа тут нет абсолютно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.09.2014, 19:52
Помогаю со студенческими работами здесь

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

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

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

Взять картинку с сервера и сохранить её на диск
Доброго времени суток. Вопрос как получить с ya.ru картинку (логотип) и сохранить её на диск? int _tmain(int argc, _TCHAR* argv) { ...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru