首页 > 其他分享 >Qt - 从网站上获取图片

Qt - 从网站上获取图片

时间:2024-09-25 17:47:52浏览次数:7  
标签:Qt ImageDownloader 网站 获取 manager qDebug include QNetworkAccessManager

在Qt中,你可以使用QNetworkAccessManager来从网站上获取图片。以下是一个简单的例子,展示了如何使用Qt下载图片:

imagedownloader.h

#ifndef IMAGEDOWNLOADER_H
#define IMAGEDOWNLOADER_H

#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
#include <QFile>
#include <QObject>

class ImageDownloader : public QObject
{
    Q_OBJECT
public:
    ImageDownloader(QNetworkAccessManager* manager, const QUrl& imageUrl, const QString& savePath): m_manager(manager), m_imageUrl(imageUrl), m_savePath(savePath)
    {
        connect(m_manager, &QNetworkAccessManager::finished, this, &ImageDownloader::onDownloadFinished);
        QNetworkRequest request(m_imageUrl);
        m_manager->get(request);
    }

private slots:
    void onDownloadFinished(QNetworkReply* reply)
    {
        if (reply->error())// 处理错误
        {
            qDebug() << "Download error:" << reply->errorString();
            return;
        }

        QFile file(m_savePath);
        if (!file.open(QIODevice::WriteOnly))
        {
            qDebug() << "Cannot open file for writing";
            return;
        }
        file.write(reply->readAll());
        file.close();
        qDebug() << "Image saved to" << m_savePath;
    }

private:
    QNetworkAccessManager* m_manager;
    QUrl m_imageUrl;
    QString m_savePath;
};

#endif // IMAGEDOWNLOADER_H

main.cpp

//#include "widget.h"

#include <QApplication>
#include "imagedownloader.h"
#include <QSslSocket>
#include <QDebug>


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    qDebug()<< QSslSocket::sslLibraryBuildVersionString();

    QNetworkAccessManager manager;
    QUrl imageUrl("https://www.leawo.org/images/7days_prom_en.jpg"); // 替换为实际的图片URL

    QString savePath = "./downloaded_image.jpg"; // 图片将被保存到的路径

    ImageDownloader downloader(&manager, imageUrl, savePath);

    return a.exec();
}

确保你的项目文件.pro包含了网络模块:

QT += network

在这个例子中,ImageDownloader类负责处理图片下载。它使用QNetworkAccessManager发送一个GET请求到指定的URL,并在下载完成时将图片保存到本地文件。你需要提供一个有效的图片URL和想要保存图片的文件名。

运行效果:

 

标签:Qt,ImageDownloader,网站,获取,manager,qDebug,include,QNetworkAccessManager
From: https://www.cnblogs.com/zhuchunlin/p/18431845

相关文章

  • QT5程序部署提示缺少Qt5系统库问题的解决方法 symbol lookup error /libQt5XcbQpa.so.
    https://blog.csdn.net/qq_29852231/article/details/128853681 QT5程序部署提示缺少Qt5系统库问题的解决方法问题:在用QT5.12开发程序后,部署至现场(Ubuntu18/20)发现提示缺少QT5的平台库(platform)或者系统提供的QT5平台库无法正常支撑程序运行解析:经过研究发现,即时将Platform文件......
  • 企业竞争情报实时获取,驱动企业打破市场桎梏
    近年来,国内的市场环境一直在高速变化,多方因素的影响下,加速了市场环境的变化,大部分行业迎来发展拐点,行业产能过剩,市场竞争激烈,业务增长困难。房地产行业在我国城镇化背景下,经历了近20年的高速发展,近年来受政策收紧和其他因素影响,市场需求萎缩,增量困难;医药行业市场需求持续释放,政策红......
  • 国外网站服务器访问超时怎么解决
    国外网站服务器访问超时可能是由于多种原因造成的,包括网络连接问题、服务器配置、DNS解析问题等。以下是一些可能的解决方案:检查网络连接:确认你的网络连接是否稳定。重启你的路由器或调制解调器。尝试在不同的设备上访问该网站,以确定问题是否出在特定设备上。刷新DNS缓存:在你的电脑......
  • 影视视频网站需要租用存储服务器吗
    影视视频网站通常需要处理和存储大量的视频文件,这些文件占用的空间很大,对存储和带宽的需求较高。因此,对于影视视频网站来说,租用专门的存储服务器通常是必要的。以下是几个原因说明为什么影视视频网站可能需要租用存储服务器:存储空间需求:视频文件大小通常很大,从几GB到几十GB不等,而......
  • Linux安装MQTT 服务器(图文教程)
    MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,专为低带宽和不稳定的网络环境设计,非常适合物联网(IoT)应用。官网地址:https://www.emqx.com/一、版本选择根据自己的操作系统进行下载即可,推荐使用rpm安装方式。下载地址:https://www.emqx.com/zh/downloads-and-i......
  • 关于QT6.5.3版本安装、更新/添加组件的一些心得
    目录引言一、如何下载和卸载QT1.下载QT2.卸载QT二、镜像引言本文主要记录一下关于VisualStudio2022和QtCreator14.0.1(Community)的安装......
  • 前端如何接收SSE流式数据传输(大模型网站常用)
    使用fetchEventSource参考:https://blog.csdn.net/qq_43750656/article/details/131591198https://zhuanlan.zhihu.com/p/686618062首先安装:npminstall--save@microsoft/fetch-event-source我参考各个资料写的函数://流式传输处理函数exportfunctionsseRequest(url:s......
  • 自适应企业网站建站系统源码 带完整的安装代码包以及搭建部署教程
    系统概述传统的建站方式往往需要耗费大量的时间和资源,而且对于非专业人士来说,操作难度较大。为了满足企业快速建站的需求,自适应企业网站建站系统源码应运而生。该源码的开发团队致力于打造一款功能齐全、易于操作的建站系统,让企业能够在短时间内搭建出符合自身需求的网站,提升......
  • Vue3 - 详细实现安装引入高德地图并查询展示周边交通/教育/医疗/商场/生活/娱乐等POI
    前言Vue2版本,请访问这篇文章。在vue3|nuxt3项目开发中,详解高德地图根据当前定位获取周边附近的商圈,vue3高德地图获取周边商圈并将这些地址位置列出来供用户点击跳转和选择,获取当前位置或指定区域周边的交通出行、学校教育、医院诊所、商场购物、生活娱乐、旅游景......
  • 我的网站集成ElasticSearch初体验
    我的网站集成ElasticSearch初体验   最近,我给我的网站(https://www.xiandanplay.com/)尝试集成了一下es来实现我的一个搜索功能,因为这个是我第一次了解运用elastic,所以如果有不对的地方,大家可以指出来,话不多说,先看看我的一个大致流程   这里我采用的sdk的版本是El......