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 73728B73728B7372so 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 :))