通过HTTP来获得网页上的图片,在MFC中主要是通过类CInternetSession类完成,在QT中则是通过三个类来完成,QNetworkAccessManager,QNetworkRequest,QNetworkReply,三个类的详细用法还需自己多看文档,这里就不多解释了,下面直接贴代码,别忘了在Qt工程中加入 QT += core network.
附上代码和效果图:
void QtGuiApplication1::downloadUrlPix()
{
QString url = "http://120.27.131.71:8080/topeye/upload/portraits/3bead3433cd04b4b96b530c6ad8c87fd.png";
QNetworkAccessManager *manager = new QNetworkAccessManager;
QNetworkRequest request;
request.setUrl(QUrl(url));
connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(onDownloadFileComplete(QNetworkReply *)));
manager->get(request);
}
void QtGuiApplication1::onDownloadFileComplete(QNetworkReply *reply)
{
QString url = "http://120.27.131.71:8080/topeye/upload/portraits/3bead3433cd04b4b96b530c6ad8c87fd.png";
QString filePath = "../";
const QString fileName = filePath + url.right(url.size() - url.lastIndexOf("/"));
qDebug() << fileName;
QFile file;
file.setFileName(fileName);
file.open(QIODevice::WriteOnly);
if (!file.isOpen()) {
qDebug() << "file is not open";
return;
}
if (!file.isWritable()) {
qDebug() << "file write disable";
return;
}
file.write(reply->readAll());
file.close();
}
void QtGuiApplication1::showPixMap()
{
QString filePath = "../";
QString url = "http://120.27.131.71:8080/topeye/upload/portraits/3bead3433cd04b4b96b530c6ad8c87fd.png";
QString fileName = filePath + url.right(url.size() - url.lastIndexOf("/"));
/*
string filePath = "../";
string url = "http://120.27.131.71:8080/topeye/upload/portraits/3bead3433cd04b4b96b530c6ad8c87fd.png";
string fileName = "../3bead3433cd04b4b96b530c6ad8c87fd.png"; // = filePath + url.find("");
*/
if (filesystem::exists(fileName.toStdString())) {
QPixmap pix = QPixmap(fileName);
pix = pix.scaled(QSize(236, 236), Qt::KeepAspectRatio); //调整图片大小
ui.label_pix->setAlignment(Qt::AlignCenter); //居中显示
ui.label_pix->setPixmap(pix);
}
else {
qDebug() << "file is not exit";
}
}