2012-12-23 2 views
1

웹에서 이미지를 다운로드하려면 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); 
    } 
} 

내 저장에 문제가 있습니다. bool1true이지만 bool2false입니다. 이름에 URL 경로를 사용하는 이유는 이미지의 고유 한 이름을 생성하기 위해서입니다.

"/home/guest/images/splash/3.jpg" 

그래서 내 질문은 다음과 같습니다 : 나는 이름을 인쇄 할 때, 그것은 같은 것이 있어요

  1. 내가 QImage와 무슨 일을하고 있어요?
  2. 대신 QFile 및 QStream을 사용하여 이미지를 기록 할 수 있습니까?
+1

디렉토리가 이미 존재합니까? – Mat

+0

음 ... 아니, 그냥 폴더를 만들고 완벽하게 작동하는 것 같다 ... 나는 바보 ... 감사합니다! 대답으로 그것을 쓸 수 있습니까? 대답을 받아 들일 수 있습니다. – mrz

+1

BTW, 아니요, QImage를 사용할 필요가 없습니다. – Mat

답변

0

귀하의 의견에 Mat이 말했듯이 저는 다른 것을 추가 할 것입니다. 디렉토리가 존재하는지 확인해야 할 경우 사용하려면 QDir::mkdir()

관련 문제