Russian Qt Forum
Ноябрь 23, 2024, 17:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сохранить в файл изображение по линку?  (Прочитано 7764 раз)
developer-nsk
Гость
« : Декабрь 16, 2009, 17:22 »

Господа программисты, подскажите, пожалуйста: есть линк на изображение (прямая ссылка вида "http://img.artlebedev.ru/kovodstvo/idioteka/i/9CEF0595-CDD6-4751-91A4-FFF67A9E7E61.jpg"), каким образом можно загрузить его и сохранить в виде файла? Как вариант загрузки я уже нашёл класс QWebView, а вот как заставить его сохранить изображение в файл...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Декабрь 16, 2009, 17:47 »

а под загрузкой понимается отображение файла?

Может просто посмотреть в сторону модуля QtNetwork?
Записан

Юра.
Vass
Гость
« Ответ #2 : Декабрь 16, 2009, 18:39 »

Вам нужно использовать QNetworkAccessManager как я понимаю.
Записан
alex12
Гость
« Ответ #3 : Декабрь 16, 2009, 19:06 »

См. QHttp

У меня такая задачка получалась. Только надо аккуратно подключение делать. Синхронизироваться через сигналы.
Записан
Lee Harvey Oswald
Гость
« Ответ #4 : Декабрь 16, 2009, 22:14 »

в книжке видел такой пример

Код:
QFile file("название с расширение"); // image.jpg   нужно указать расширение того файла что хочешь скачать
QHttp http;
if(file.open(QIODevice::WrireOnly){  
http.setHost("сайт");   //www.img.artlebedev.ru
http.get("/путь на нужную страницу/имя файла с расширением", &file);   //   /kovodstvo/idioteka/i/9CEF0595-CDD6-4751-91A4-FFF67A9E7E61.jpg
http.close();
file.close();

должен скачивать файл в текущую директорию под именем qtназвание, я правда не проверял, попробуй
« Последнее редактирование: Декабрь 16, 2009, 22:20 от Lee Harvey Oswald » Записан
Dendy
Гость
« Ответ #5 : Декабрь 16, 2009, 22:58 »

См. QHttp

Не см. QHttp. См. QNetworkAccessManager

Код
C++ (Qt)
QNetworkAccessManager m;
QNetworkReply * reply = m.get( QNetworkRequest( url ) );
QEventLoop loop;
connect( reply, SIGNAL(finished()), &loop, SLOT(quit()) );
loop.exec();
if ( reply->error() == QNetworkReply::NoError )
{
 QFile image( "image.jpg" );
 image.open( QIODevice::WriteOnly );
 image.write( reply->readAll() );
}
Записан
developer-nsk
Гость
« Ответ #6 : Декабрь 17, 2009, 12:41 »

Спасибо огромное за подсказки! Обязательно попробую вышеописанные примеры!
Записан
virtual_root
Гость
« Ответ #7 : Апрель 13, 2012, 10:47 »

Ребята, подскажите,пожалуйста, а как быть если расширение каринки мне заранее не известно. По ссылке мне сервер отдает картинку, т.е. ссылка такого рода:   http://bt.bigtelecom.ru/index.php?r=client/getbanner&skey=c9d32ccaaaacba87d2370bbbca3d7f6eb957e11cc2acce0ab3ca09e29362eeeeeed19cc9dfe7aa0bac93a3a7c717bfb3fec42e69be526af396035b4d0d765682&bannerId=28&wide=1&doubleResolution=1 
Сервер возвращает картинку, а как мне её сохранить? Где получить её расширение?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Апрель 13, 2012, 11:53 »

в заголовке файла обычно есть информация о формате, погугли структуру файлов изображений
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.095 секунд. Запросов: 23.