JPEG aus HTTP Response erstellen?



  • Hallo Leute ich hab wiedermal eine Frage.

    Und zwar hab ich ein kleines Programm geschrieben dass via Cocket auf einen HTP Server Connected, einen Request für ein Bild sendet mit GET und nun auch die Response bekommt.

    Die sieht etwa so aus:

    HTTP/1.1 200 OK
    Date: Wed, 11 Aug 2004 22:00:11 GMT
    Server: Apache/2.0.50 (Unix) PHP/5.0.0
    Last-Modified: Thu, 05 Aug 2004 11:09:15 GMT
    ETag: "28223-edfb-2e5bccc0"
    Accept-Ranges: bytes
    Content-Length: 60923
    Keep-Alive: timeout=15, max=100
    Connection: Keep-Alive
    Content-Type: image/jpeg

    ÿØÿà JFIF  H H ÿáóExif MM *         b   j(    1   r2   †‡i   œ È    Adobe Photoshop 7.0 2004:08:05 13:08:21    ÿÿ     Æ    d           (       &   Å H  H ÿØÿà JFIF  H H ÿí Adobe_CM ÿî Adobe d€ ÿÛ „   
       

    [UND SO WEITER] [60 kb halt]

    Öð…Ew^îO̦Ä2ÄÆÄè-±gÜÂuÈ>ºëZ±e epiWƒÜ¥Õn`C†Mµï«¢Ô°¢SJ÷Öìš³K ÎF@ܷ䆦›
    æ€_v]\.ØÍr Ì®ëu™xÔ0:à÷×¼óÈÓWwÅ뚺¼Ã¢±b´àÙY[XÔ¦A…*É¢í]V/”Â;‰£( Ã(Ó
    ¹w—àé­Uº·Óam¶ÒØp×^ðEP­8¦¾muºu
    ¬pQgÔîæk "‚æé@×k­´—~sS|ªYíFžåMpѠɶ½õLKX…a^àúë
    ŒÖ&XV½/.[”f5@(8k¦4‹k5…žÖ¨äRÜŽ/F‡\U/
    Sdœ3 g“éÆÕ(è ¼#L¢½Ûkx¾FTuƝ˜Ò ªÅu—Ì7A¤ƒŽÐVòØ”ÎaU‚[.\âæzÎóŽ¨bs¥ó¤§¤Xï+=¦ÝàÖiq^“Ö® –îα
    3s‰ŠM°38ú„öÿ ûÙÓ/)÷Á˜I¹ÑeN?ó[äÒIïÿ ï¿üí²óÿ Â-²HlYvK·©ol{ãß{ü¬ã7–2ò‹Ë¤»ú’<¥Ù.Ïð,{fqèãJ{ýJàDÛº]ý@_èÉcßѹw;N=ŽýTèãÔ£²¼wS§z¿KŸÿÙ

    Soweit so gut, speichere ich diese Nachricht in einer txt Datei.

    Wie kann ich nun das Content unter dem Response teil so verarbeitetn, dass es Windows als Jpeg akzeptiert und anzeigt?
    Hab probiert den oberen teil via Hex editor zu löschen (sprich sodas der jpeg header der erste Teil des Files ist) aber Win akzeptiert es dennoch nicht als ein Bild.

    Hilfe mfg bigmama



  • Ich würde die API-Funktion URLDownloadToFile verwenden anstatt der CSocket-KLassen.
    Die API nimmt dir die komplette HTTP-Kommunikation ab.
    Wenn du jedoch das HTTP-Protocol selbst implementieren möchtest, wird das
    wohl ein etwas größeres Projekt und einiges an Zeit in Anspruch nehmen.



  • ich brauch doch gar nicht das komplette protokoll implementieren, die verbindung und kommunikations funktioniert ja schon bestens!

    mein Problem sind die Daten die ich bekomme!

    Diese Daten sind der Header + Rest Einer JPeg Datei, wenn ich das zeug jetzt aber in eine Datei packe ud diese Jpeg nenne wird diese nicht als jpeg akzeptiert.



  • Sag ich doch das dein Problem DAS Protokoll ist.
    Was machst du wenn die Daten per chunk übertragen werden ?
    Was machst du wenn die Daten codiert übertragen werden ?
    Und noch vieles mehr, was dir der HTTP-Server so alles um die Ohren hauen
    kann... Redirection z.B. oder Object moved, und dann ???

    Schau dir doch die Funktion erstmal an, dann kannst Du ja immer noch entscheiden.

    Aber egal, mach was du willst.



  • also ich hab das bild das ich haben will mal einfach mit "bild speichern unter" als jpeg gespeichert und im Hex Editor dann geöffnet.

    nun hab ich mal das was ich empfange im hex editor geöffnet und die Daten die drinne stehen sind identisch mit denen des orginal bildes,also bekomm ich wohl die richtigen daten (oder nicht), jedoch will winxp das file trozdem NICHT als jpeg akzeptieren, die inhalte SIND ABER identisch?!?! 😕 😮



  • Kann es sein, dass du dein JPEG-File als ASCII- oder Text-Datei abgespeichert hast? Falls ja, würde es ziemlich sicher helfen, es als Binär abzuspeichern.
    Weil wenn die Datein binär identisch wären, würde sie dein Viewer auch korrekt anzeigen.

    HTH



  • also ich ahb die daten in einem CByteArray zwischengespeichert, also lese sie so aus im prinzip und so speicher ich sie dann:

    CFile *myFile = new CFile;
    	   myFile->Open("c:\\loglog2.txt",CFile::modeCreate|CFile::modeWrite,0);
    	   myFile->Write(arResponse->GetData(),arResponse->GetSize());
    	   myFile->Close();
    


  • Ich kenn mich zwar mit den MFC-Files nicht aus, aber füg doch mal ein

    CFile::typeBinary
    

    bei den Optionen in Open ein.

    HTH


Log in to reply