Qt -从网络下载图像
Qt - Download Images from web
我正在尝试使用Qt/c++编写应用程序,从web下载图像。该程序将以文本文件的形式提供URL列表,并应打开每个URL并下载每个网站中的所有图像。
为了做到这一点,我子类化QNetworkAccessManager并重写createRequest
方法/函数,如下所示:
QNetworkReply* clsNAM::createRequest(Operation op,const QNetworkRequest & req,
QIODevice * outgoingData )
{
return new clsNR(QNetworkAccessManager::createRequest(_op,_req,_outgoingData));
}
我的QNetworkReply类的子类,clsNR,从它的原始标头识别回复的类型,类似于:
bool clsNR::isImage()
{
if(this->rawHeader("Content-Type").toLower().startsWith("image"))
return true;
else
return false;
}
当我得到readyRead信号(这意味着有数据可读)时,我将其存储在QbyteArray中。我已经在clsNR中连接了一个插槽,以便在QNetworkReply完成时保存图像。它看起来像:
void clsNR::slotCloseConnection()
{
if(isImage())
{
QImage image;
bool bool1 = image.loadFromData(ContentData);
QString name(QDir::homePath());
name.append(this->url().path());
bool bool2 = image.save(name,0,-1);
}
}
我的存款有问题。bool1
是true
,而bool2
是false
。我使用url路径作为名称的原因是为图像生成唯一的名称。当我打印出名称时,它类似于:
"/home/guest/images/splash/3.jpg"
所以我的问题是:
- 我在QImage做错了什么?
- 我可以使用QFile和QStream来记录图像吗?
我会添加一些其他内容,就像Mat在您的评论中所说的那样。如果需要检查目录是否存在,请使用Qdir::exists(),如果需要创建目录,请使用Qdir:: mkdir()
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 使用Libcurl C 从Twitter下载图像
- 如何避免在 c++ 中使用 libssh scp 命令压缩从远程 ssh 下载的图像、音频和视频文件?
- Boost:Asio.从服务器下载图像文件
- 试图在BlackBerry Cascades QT和QML下载图像
- C QTNETWORKREQUEST下载图像,但获得了HTML
- 在c++中使用curl从url下载图像
- 从服务器下载图像(cUrl,但需要建议)C++
- Canon SDK-下载图像到主机
- 在哪里下载BOOST通用图像库的数字扩展
- 使用 C++/boost::asio/libcurl 的简单代理 - 无法下载图像
- 下载一个图像样本
- cURL下载相机的图像(http请求)
- 如何通过http下载和保存图像
- Qt -从网络下载图像