TImage1->MemoryStrem->TImage2 ????



  • Hi Leute!

    Wie krieg ich ein Jpg, das in einer TImage-Komponente liegt in einen Stream - und von dem Stream in ein weiteres TImage-Feld (Image2) rein?

    Habs mal so probiert:
    --------
    TMemoryStream *mem=new TMemoryStream();
    // Datei wird in Image-Feld geladen...
    Image1->Picture->LoadFromFile("c:\\test.jpg");
    //Grafik wird in den STream geladen...
    Image1->Picture->Graphic->SaveToStream(mem);

    //zurückspulen....
    mem->Position=0;

    //Grafik soll im Image2 angezeigt werden --- Hier entsteht der Fehler EAccessViolation:

    Image2->Picture->Graphic->LoadFromStream(mem);
    //saubermachen...
    delete mem;
    ------------------

    Wer weiß Rat???

    Martin



  • Anmerkung:
    Mir ist grad aufgefallen, daß wenn ich in das Image2-Feld am Anfang ein anderes Jpg-Bild lade, funktionierts.... ???

    So:
    -----
    TMemoryStream *mem=new TMemoryStream();
    // Datei wird in Image-Feld geladen...
    Image1->Picture->LoadFromFile("c:\\test.jpg");
    Image1->Picture->LoadFromFile("c:\\anderesBild.jpg");

    //Grafik wird in den STream geladen...
    Image1->Picture->Graphic->SaveToStream(mem);

    //zurückspulen....
    mem->Position=0;

    //Grafik soll im Image2 angezeigt werden --- Hier entsteht der Fehler EAccessViolation:

    Image2->Picture->Graphic->LoadFromStream(mem);
    //saubermachen...
    delete mem;

    ------

    Muß das Image2-Feld erst initialisiert werden -und wenn ja - wie mache ich das auch ohne vorheriges Laden eines anderen Bildes???

    Martin



  • hab leider keine lösung,

    aber hast du schon versucht, ob der selbe
    fehler mit *.bmp auftritt?



  • Du könntest den Umweg über ein extra TJPEGImage gehen.

    TJPEGImage * jpg = new TJPEGImage();
      jpg->LoadFromStream(mem);
      Image2->Picture->Assign(jpg);
      delete jpg;
    

    Ich gehe mal davon aus, dass du das Bild mittels Stream über's Netz verschicken willst, oder? Denn ansonsten wäre es ja einfacher, die Bildinhalte direkt per Assign zuzuweisen.


Anmelden zum Antworten