웹에서 이미지를 다운로드하려면 Qt/C++을 사용하여 응용 프로그램을 작성하려고합니다. 이 프로그램에는 URL 목록이 텍스트 파일로 제공되며 각 URL을 열고 각 웹 사이트의 모든 이미지를 다운로드해야합니다. 이를 위해Qt - 웹에서 이미지 다운로드
, 나는 QNetworkAccessManager를 서브 클래스와 같은 아래 createRequest
방법/함수를 재정의 : QNetworkReply 클래스, clsNR, 내 서브 클래스가 같은 원시 헤더에서 뭔가를 응답의 유형을 식별
QNetworkReply* clsNAM::createRequest(Operation op,const QNetworkRequest & req,
QIODevice * outgoingData)
{
return new clsNR(QNetworkAccessManager::createRequest(_op,_req,_outgoingData));
}
:
bool clsNR::isImage()
{
if(this->rawHeader("Content-Type").toLower().startsWith("image"))
return true;
else
return false;
}
나는 (읽을 수있는 데이터가 의미) readyRead 신호를받을 때, 나는이 (가) QbyteArray오고 저장합니다. QNetworkReply가 완료되면 이미지를 저장하기 위해 clsNR의 슬롯을 연결했습니다. 모양은 다음과 같습니다.
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
음 ... 아니, 그냥 폴더를 만들고 완벽하게 작동하는 것 같다 ... 나는 바보 ... 감사합니다! 대답으로 그것을 쓸 수 있습니까? 대답을 받아 들일 수 있습니다. – mrz
BTW, 아니요, QImage를 사용할 필요가 없습니다. – Mat