BMP | JPEG lesen



  • wie kann ich am besten eine .bmp oder .jpeg auslesen und in eine TImage kompoente tun ?
    Aber Achtung jetzt kommts:
    wenn ich ein Bild in den Builder packe wird das so angezeigt:

    424D9EBF0B000000 0000360000002800 0000780300002101 0000010018000000
    000068BF0B000000 0000000000000000 0000000000008B73 728B73728B73728B
    73728B73728B7372 8B73728B73728B73 728B73728B73728B 73728B73728B7372
    8972715F46308760 2FDACCB9EAE4DBDF D7CCD9CEC0D7CBBA D5C8B7D4C6B5D3C6
    B4D3C5B4D3C5B4D3 C6B4D4C6B5D5C8B7 D7CBBAD9CEC0DFD7 CCEAE3DAD9CBB787
    602F5F4630897271 8B73728B73728B73 728B73728B73728A 73728B73728B7372

    so würd ich das gerne in einer Datei speichern und später wieder auslesen und in ein Bild packen.

    Building start
      set Typ = "Wirtschaft";
      set Name = "Metallmine";
      set Upgradable = "true";
      set MaxLevel = "30";
      set SpecialStructure = "METALL";
      set CostsMetall = "10";
      set CostsOil = "0";
      set CostsPlutonium = "0";
      set ProduktionMetall = "10";
      set ProduktionOil = "0";
      set ProduktionPlutonium = "0";
      set Image = "424D9EBF0B000000 0000360000002800 0000780300002101 0000010018000000
    000068BF0B000000 0000000000000000 0000000000008B73 728B73728B73728B
    73728B73728B7372 8B73728B73728B73 728B73728B73728B 73728B73728B7372
    8972715F46308760 2FDACCB9EAE4DBDF D7CCD9CEC0D7CBBA D5C8B7D4C6B5D3C6
    B4D3C5B4D3C5B4D3 C6B4D4C6B5D5C8B7 D7CBBAD9CEC0DFD7 CCEAE3DAD9CBB787
    602F5F4630897271 8B73728B73728B73 728B73728B73728A 73728B73728B7372"
     // and so on
    

    ich will vermeiden, dass die Bilder in extradateien sind.

    Waiting for any advice.



  • Hallo

    Lies die Daten aus der Datei in einen TMemoryStream ein, dann kannst du TBitmap::LoadFromStream bzw. TJPEG::LoadFromStream auf den Stream anwenden.

    bis bald
    akari



  • Stichwort: Binär <-> Hex

    char c;
    sprintf(s, "%02X", c);
    

    Evtl. kannst du auch einfach die Methoden "SaveToStream" bzw. "LoadFromStream" benutzen...



  • OK hab mein Wissen aufgefrischt, ich meld mich nachher noch mal, habs jetzt hingekriegt.



  • ich hab jetzt erstmal ein "um die ecke aus bmp laden" gebastelt.

    if (Open->Execute())
    	{
    		TStringList*file=new TStringList;
    		file->LoadFromFile(Open->FileName);
    		TStringStream* pss = new TStringStream(file->Text);
    		TMemoryStream* pms = new TMemoryStream();
    		pms->LoadFromFile(Open->FileName);
    		Image->Picture->Bitmap->LoadFromStream(pms);
    		delete pss;
    		delete pms;
    		delete file;
    	}
    

    Aber nicht was ich so brauche.
    So kann ich das nicht in die Datei schreiben, schon wegen der Leseprobleme, wenn ich die richtige Stelle finden will.

    Ich brauch dringend ein Beispiel, bzw etwas hilfe.
    1. In welcher Form speicher ich es denn am besten, wie wandele ich es richtig um ?
    2. Wie such mir das richtig aus der Datei raus ? hinter Image = "STREAM";
    (in geringer Zeit)

    3. Ich wollte das in einem vectorstd::string speichern, (dringend notwendig)
    Aber kann der das überhaupt schlucken so eine große datei ? (und da kommen ja dann einige Bilder rein).

    EDIT: Merk grad oben ist es doppekt gemoppelt.
    Ist ja jetzt egal, dass hilft mir ja eh nichts



  • Any Example ?

    Vielleicht was, um ein Bild Pixelweise zusammenzubasteln ?

    unter Picture.Data = {
    0A544A504547496D616765B0760000FFD8FFE000104A46494600010101006000
    600000FFE1001645786966000049492A0008000000000000000000FFDB004300
    080606070605080707070909080A0C140D0C0B0B0C1912130F141D1A1F1E1D1A
    1C1C20242E2720222C231C1C2837292C30313434341F27393D38323C2E333432
    FFDB004301090909[...] } (Form1-Design-alsText)

    ist es nochmal anders gespeichert.
    ist die länge hier der hex zahl für Pixel[integer] hier 8 ?



  • akari schrieb:

    Lies die Daten aus der Datei in einen TMemoryStream ein, dann kannst du TBitmap::LoadFromStream bzw. TJPEG::LoadFromStream auf den Stream anwenden

    Ich konkretisiere meine Frage noch ein mal.
    Wie müssen die Daten den Vorliegen, damit ich mit ihnen arbeiten kann ?
    (& und in TImage anzeigen)

    Und wie pack ich nen String in nen StringStream, das würde zumindest das leseproblem erstmal lösen.
    (std::stringstream ist da schöner :))


Anmelden zum Antworten