RTF mit Grafik
Moderator: Moderatoren
- Armin
- Rekursionen-Architekt
- Beiträge: 393
- Registriert: Mo, 26. Sep 2005 12:09
- Wohnort: 75331 Engelsbrand
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
RTF mit Grafik
Hallo zusammen,
ich will an einen RTF-Text ein Bild (bmp) anhängen. Laut MS-RTF-Spezifikation sieht das dann ungefähr so aus:
\pict <data>
Wie bringe ich das Bild in ein hexadezimal-Format? Ich hab´s mit oBmp:setBuffer() versucht... ist das der richtige Weg?
// Unterschrift als Bild laden und an RTF anhängen
oBmp := XbpBitmap():new()
oBmp:loadFile(BILD1.BMP")
cBmp := oBmp:setBuffer()
cHexBmp := StrToHex( cBmp)
cText += "\pict "+cHexBmp
Grüsse, Armin
ich will an einen RTF-Text ein Bild (bmp) anhängen. Laut MS-RTF-Spezifikation sieht das dann ungefähr so aus:
\pict <data>
Wie bringe ich das Bild in ein hexadezimal-Format? Ich hab´s mit oBmp:setBuffer() versucht... ist das der richtige Weg?
// Unterschrift als Bild laden und an RTF anhängen
oBmp := XbpBitmap():new()
oBmp:loadFile(BILD1.BMP")
cBmp := oBmp:setBuffer()
cHexBmp := StrToHex( cBmp)
cText += "\pict "+cHexBmp
Grüsse, Armin
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo Armin,
ich habe das noch nicht probiert, aber ich würde nach der Beschreibung statt ein XbpBitmap Object zu nutzen (was weis ich was die intern machen) die BMP Datei direkt in einen String einlesen und dann in HEX umwandeln:
da du die Tools ja offensichtlich hast, wäre FileStr(cBild) sicherer.
ich habe das noch nicht probiert, aber ich würde nach der Beschreibung statt ein XbpBitmap Object zu nutzen (was weis ich was die intern machen) die BMP Datei direkt in einen String einlesen und dann in HEX umwandeln:
Code: Alles auswählen
cBMP := strToHex(memoread(cBild))
Gruß
Hubert
Hubert
- Armin
- Rekursionen-Architekt
- Beiträge: 393
- Registriert: Mo, 26. Sep 2005 12:09
- Wohnort: 75331 Engelsbrand
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Hallo Hubert,
ich habe es jetzt mit cBMP := strToHex(memoread(cBild)) getestet.
In cBMP steht ""BM■# ..."
cHexBmp:=StrToHex(cBmp)
In cHexBmp steht dann cBmp auch in Hex.
Das "..." und dann fertig. kann doch eigentlich nicht sein - das kam auch aus oBmp:setbuffer().
Stimmt etwas in dem Bmp nicht oder mache ich da was falsch?
Beste Grüsse, Armin
ich habe es jetzt mit cBMP := strToHex(memoread(cBild)) getestet.
In cBMP steht ""BM■# ..."
cHexBmp:=StrToHex(cBmp)
In cHexBmp steht dann cBmp auch in Hex.
Das "..." und dann fertig. kann doch eigentlich nicht sein - das kam auch aus oBmp:setbuffer().
Stimmt etwas in dem Bmp nicht oder mache ich da was falsch?
Beste Grüsse, Armin
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo,
ich habe mal ein paar Tests durchgeführt:
1. MemoRead() hat bei mir immer richtig gelesen und nichts verändert, obwohl ich charset auf OEM habe. Die Testdatei hatte chr(0) und chr(26) und dennoch war das Ergebnis ok.
2. cBmp := memoread("bild.bmp") lädt die Datei unverändert in den String und wenn man diesen anzeigen läßt, beginnt der immer mit "BM" dann irgendwelche Zeichen, dann chr(0) dann eine "6" und dann im Rest je nach Bild wieder irgendwelche Zeichen, je nach Farbe.
3. cHexBmp := StrToHex(cBmp) führt dann zu dieser Anzeige "424D..00000000000036....." die ... stehen für unterschiedliche Zahlen. 424D entspricht dem "BM" ...
Somit muss dein Problem in der RTF Umsetzung liegen, ich versuche es eben mal ...
In Wordpad direkt als Bitmap-Objekt eingefügt, erscheint meine Bitmap etwas seltsam als:
ob man es auch ohne Object hinbekommt weiß ich nicht, ich kenne mich nicht mit RTF Format aus. objw und objh stehen wohl für Breite und Höhe, ob es Pixel sind ? Die Datei war eigentlich recht klein.
ich habe mal ein paar Tests durchgeführt:
1. MemoRead() hat bei mir immer richtig gelesen und nichts verändert, obwohl ich charset auf OEM habe. Die Testdatei hatte chr(0) und chr(26) und dennoch war das Ergebnis ok.
2. cBmp := memoread("bild.bmp") lädt die Datei unverändert in den String und wenn man diesen anzeigen läßt, beginnt der immer mit "BM" dann irgendwelche Zeichen, dann chr(0) dann eine "6" und dann im Rest je nach Bild wieder irgendwelche Zeichen, je nach Farbe.
3. cHexBmp := StrToHex(cBmp) führt dann zu dieser Anzeige "424D..00000000000036....." die ... stehen für unterschiedliche Zahlen. 424D entspricht dem "BM" ...
Somit muss dein Problem in der RTF Umsetzung liegen, ich versuche es eben mal ...
In Wordpad direkt als Bitmap-Objekt eingefügt, erscheint meine Bitmap etwas seltsam als:
Code: Alles auswählen
...
{\object\objemb{\*\objclass Paint.Picture}\objw1709\objh1191{objdata
01050000
02000000
07000000
50427275736800
00000000
00000000
801a0000
424de1a0...... das ist die Bitmap ...
Gruß
Hubert
Hubert