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

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

05.09.2014, 20:50. Показов 2220. Ответов 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
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 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
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 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
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru