QT中通过HTTP URL获取并保存网页上的图片
来源:互联网 发布:网络信息安全的概念 编辑:程序博客网 时间:2024/05/01 21:06
通过HTTP来获得网页上的图片,在MFC中主要是通过类CInternetSession类完成,在QT中则是通过三个类来完成,QNetworkAccessManager,QNetworkRequest,QNetworkReply,三个类的详细用法还需自己多看文档,这里就不多解释了,下面直接贴代码,采用的是两种方式来实现的,一个类和一个函数,别忘了在Qt工程中加入 QT += core network.
#ifndef DOWNLOADER_H#define DOWNLOADER_H#include <QFile>#include <QNetworkAccessManager>#include <QNetworkRequest>#include <QNetworkReply>#include <QObject>#include <QUrl>class Downloader : public QObject { Q_OBJECT QFile *m_file; bool m_isReady;public: explicit Downloader(QObject *parent = 0) : QObject(parent) {m_isReady = true;} virtual ~Downloader() {} void downloadFileFromURL(const QString &url, const QString &filePath);private slots: void onDownloadFileComplete(QNetworkReply *reply);};QNetworkReply::NetworkError downloadURL(const QString &url, const QString &fileName);#endif // DOWNLOADER_H
#include "downloader.h"#include <QDebug>#include <QEventLoop>void Downloader::downloadFileFromURL(const QString &url, const QString &filePath){ if (!m_isReady) return; m_isReady = false; const QString fileName = filePath + url.right(url.size() - url.lastIndexOf("/")); qDebug() << fileName; m_file = new QFile(); m_file->setFileName(fileName); m_file->open(QIODevice::WriteOnly); if (!m_file->isOpen()) { m_isReady = true; return; } QNetworkAccessManager *manager = new QNetworkAccessManager; QNetworkRequest request; request.setUrl(QUrl(url)); connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(onDownloadFileComplete(QNetworkReply *))); manager->get(request);}void Downloader::onDownloadFileComplete(QNetworkReply *reply){ if (!m_file->isWritable()) { m_isReady = true; return; } m_file->write(reply->readAll()); m_file->close(); m_isReady = true;}bool downloadURL(const QString &url, const QString &fileName){ QNetworkAccessManager manager; QNetworkRequest request; request.setUrl(url); QNetworkReply *reply = manager.get(request); QEventLoop loop; QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); if (reply->error() != QNetworkReply::NoError) { return false; } QFile f(fileName); qDebug() << fileName; if(!f.open(QIODevice::WriteOnly)) return false; f.write(reply->readAll()); f.close(); delete reply; return true; }
下面是测试代码:
#include <QCoreApplication>#include "downloader.h"int main(int argc, char *argv[]){ QCoreApplication a(argc, argv);// Downloader downloader;// downloader.downloadFileFromURL("https://img3.doubanio.com/view/photo/photo/public/p449668815.jpg",// "G:/Documents/picture"); downloadURL("https://img3.doubanio.com/view/photo/photo/public/p449668815.jpg", "G:/Documents/picture/p449668815.<span style="font-family: Arial, Helvetica, sans-serif;">jpg");</span> return a.exec();}
上面的路径G:/Documents/picture/你得先建立这个路径,如果你的需求是路径不存在则先新建,那么需要在程序中加几句代码来实现,也是比较简单的。
0 0
- QT中通过HTTP URL获取并保存网页上的图片
- java通过http的图片地址获取图片并保存
- iOS 通过URL获取图片,并保存到本地
- iOS 通过URL获取图片,并保存到本地
- 通过HttpURLConnection获取网页图片 并保存至内存卡的例子
- 通过网页Url,保存为图片
- C# 通过URL获取图片并显示在PictureBox上的方法
- C# 通过URL获取图片并显示在PictureBox上的方法
- C# 通过URL获取图片并显示在PictureBox上的方法
- 通过OPENCV从视频中获取图片并保存
- java下载并保存网页上的图片
- 一个简单获取网页图片并压缩保存的程序
- iOS开发中,通过URL地址获取网络上的图片
- 通过url联网获取图片并解析
- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
- [大型网站优化技术] -- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片
- Java-单机版的书店管理系统(练习设计模块和思想_系列 三 )
- HDU 4686 Arc of Dream(矩阵快速幂)
- FAT32文件系统的存储组织结构
- asp.net获取客户端浏览器及主机信息
- c++ Lambda 表达式介绍
- QT中通过HTTP URL获取并保存网页上的图片
- ab-web压力测试
- 【OpenCV】通过鼠标在图像中绘制RotatedRect旋转矩形
- android Jsoup获取网站内容(实例为新闻标题获取) —android网络必学
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别(总结)
- Thrift,protobuf,json,xml,binary之间的对比
- 安卓自定义按钮
- iOS文件夹与plist文件的创建与删除
- 求阶乘