Autor Thema: Bild aus DXL auslesen (Base64)  (Gelesen 5963 mal)

Offline prong

  • Frischling
  • *
  • Beiträge: 22
  • I love YaBB 1G - SP1!
Bild aus DXL auslesen (Base64)
« am: 14.01.05 - 20:05:06 »
Hallo zusammen,

kann mir vielleicht jemand einen CODE-Tip (am besten in Java) geben, der er es mit erlaubt aus folgenden Tag das Bild so auszulesen und zu konvertieren, dass ich es wieder in Notes verwenden kann.

Der Tag:

<par><picture height='590px' width='677px'><notesbitmap>
lQAmAAAAAAAAAAAAAAABAAAAAAAAAKUCTgIIAAEACAAoAIAAQAC
.....
lQAmAAAAAAAAAAAAAAABAAAAAAAAAKUCTgIIAAEACAAoAIAAQAC
</notesbitmap></picture></par>

Prinzipiell kenne ich die vorgehensweise, schaffe es aber nicht dass ganze in funktionierenden Code umzusetzen.

Wäre super dankbar

Gruß

Marco

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: Bild aus DXL auslesen (Base64)
« Antwort #1 am: 14.01.05 - 20:15:03 »
Hi prong,

ich kenne leider Java zuwenig, aber AFAIK sind dort für diesen Zweck dieselben oder ähnliche Klassen unter ND6 zur Verfügung wie in LS. Ich schreibe daher mal von LS.

Ich bin kein DXL-Experte, kann Dir also nur ansatzweise Tipps geben.

Soweit ich weiß, hast Du 2 Möglichkeiten:
a) Parsing mit DOM
b) Parsing mit SAX

(a) ist afaik einfacher umzusetzen aber wohl hier performanceseitig nicht zu empfehlen, da das komplette DXL im Speicher landet und durchgeackert werden muss.
(b) ist etwas komplexer aber um Meilen performanter als DOM.

Schau Dir das mal in der ND6 - Designerhilfe an: unter "Contents" gibt es einen Hauptbereich "XML for Domino".

Kann gut sein, dass dies in Java noch einfacher geht (ich bin mir fast sicher).

Michael

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: Bild aus DXL auslesen (Base64)
« Antwort #2 am: 14.01.05 - 20:24:21 »
Noch was:

Die NotesDXLExporter - Klasse hat ab (ich glaube) 6.5.2 die Property ConvertNotesBitmapsToGIF. Jedenfalls gabs da mal einen Request am Anfang zu ND6-Zeiten, der dann umgesetzt wurde.

Denn das was Du da vorliegen hast ist wohl ein Bild, das über das Clipboard in ein RTF eingefügt wurde.

Also musst Du wohl ggf. schon beim Erstellen des DXL in den NotesStream entsprechend Hand anlegen.

Michael

Marinero Atlántico

  • Gast
Re: Bild aus DXL auslesen (Base64)
« Antwort #3 am: 14.01.05 - 20:32:00 »
für das xml parsing mit java empfehle ich JDom. Ich finde das am einfachsten und gleichzeitig straight forward.
Sowohl Dom als auch Sax haben meiner Ansicht nach ziemlich üble Fallstricke:
Jdom gibts hier: http://www.jdom.org/


Für das Base64 dekodieren kannst du das nehmen:
http://prdownloads.sourceforge.net/iharder/Base64-2.1.zip?use_mirror=ovh

Wenn du während des codens auf Probleme stösst, kannst du ja nochmal posten.
Weisst du überhaupt, welches Dateiformat dieses base64-Zeugs im Notes-Bitmap Element hat?

So könntest du das Bitmap erstmal in ein File auf Platte legen und das dann wieder in Notes reimportieren.

So ungefähr:
Step1: extractBase64TokenFromXml
Step2: convertBase64TokenToFile
step3: importFileToNotes

Nochne Frage: Läuft das Javaprogramm aus Notes heraus oder innerhalb von Notes.
Wenn innerhalb von Notes kannst du vermutlich kein JDom verwenden, weil die Schlawiner bis zu Release7 keinen JAXP kompatiblen xml-parser haben.

Gruß Axel

Offline prong

  • Frischling
  • *
  • Beiträge: 22
  • I love YaBB 1G - SP1!
Re: Bild aus DXL auslesen (Base64)
« Antwort #4 am: 14.01.05 - 20:34:22 »
Danke Michael,

das ganze mit dem DXL und parsen ist mir klat, aber was genau soll ich mit dem Zeug (was oben im Tag steht) machen.
Auf deutsch: Wie bekomme ich aus dem Kauderwelsch wieder ein Bild ???

Offline prong

  • Frischling
  • *
  • Beiträge: 22
  • I love YaBB 1G - SP1!
Re: Bild aus DXL auslesen (Base64)
« Antwort #5 am: 14.01.05 - 20:37:03 »
Ist ne Notes Agent der erst das XML in den Speicher schreibt und dann nur das Bild rausholen soll. Der Rest der XML Daten ist nur ein Nebenprodukt.

Wie bereits gesagt, an den XML-Node komme ich ohne Problem.
Nur das konvertieren schaffe ich gar nicht  ???

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: Bild aus DXL auslesen (Base64)
« Antwort #6 am: 14.01.05 - 20:38:25 »
Hi Axel,

Weisst du überhaupt, welches Dateiformat dieses base64-Zeugs im Notes-Bitmap Element hat?

ich glaube das war das Hauptproblem damals beim Request für den DXLExporter, nämlich dass dieses NotesBitmap nicht vernünftig umgewandelt werden konnte. Deswegen wurde wohl die Property ConvertNotesBitmapsToGIF eingeführt.
Ist aber meines Erachtens auch nicht toll. Gif heißt ja, dass nur max. 256 Farben möglich sind. Was ist also, wenn es sich da um ein Foto handelt? Notes wandelt das dann wohl radikal runter auf 256 Farben. Ich kenne jetzt auch nicht den Algorithmus den da N/D für diese gif-Umwandlung verwendet, aber befürchte stark, dass dies selbst bei Bildern die vormals vielleicht 400 Farben haben nicht optimal wird. Zumal entsprechende Optionen fehlen.

Michael

Offline prong

  • Frischling
  • *
  • Beiträge: 22
  • I love YaBB 1G - SP1!
Re: Bild aus DXL auslesen (Base64)
« Antwort #7 am: 14.01.05 - 20:45:08 »
Farbe ist bei meinem Problem egal. Wird eh nachher nur in sw gebraucht...

Ich verzweifle langsam  ;)

Marinero Atlántico

  • Gast
Re: Bild aus DXL auslesen (Base64)
« Antwort #8 am: 14.01.05 - 20:46:54 »
Moment. Was heisst eigentlich NotesBitmap?
Ein Gif oder Jpeg, dass ich in Notes importiere bleibt doch ein gif oder jpeg.
Das wird doch über OLE-Magie irgendwie da reinverlinkt.

Oder rede ich mich jetzt um Kopf und Kragen  ??? ;D

Gruß Axel

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: Bild aus DXL auslesen (Base64)
« Antwort #9 am: 14.01.05 - 20:54:56 »
Oder rede ich mich jetzt um Kopf und Kragen  ??? ;D

Gute Frage. Ich rede mich wohl auch grad um Kopf und Kragen mit meinem Halbwissen  ;D  :P

Ach ja, hier der SPR:
NotesDXLExporter.ConvertNotesbitmapsToGIF

@prong: dieses gif jetzt in eine *.gif - Datei umzuwandeln, dafür muss man wohl dann mit Base64 hantieren, und das war wohl die eigentliche Frage  ;D
Mit Java ist das glaub ich einfach, aber da müssen andere Experten ran. Axel vielleicht??
Mich würde interessieren, wie man dies unter LS machen würde  ;)

Michael
« Letzte Änderung: 14.01.05 - 20:57:17 von -Michael- »

Offline prong

  • Frischling
  • *
  • Beiträge: 22
  • I love YaBB 1G - SP1!
Re: Bild aus DXL auslesen (Base64)
« Antwort #10 am: 14.01.05 - 21:00:27 »
Da ich jetzt schon ne ganze Weile nach einer Möglichkeit suche, aber keine genaue Lösung finde,wäre das vielleicht mal was für die Best Practices Rubrik, oder??

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: Bild aus DXL auslesen (Base64)
« Antwort #11 am: 14.01.05 - 21:02:34 »
Ein Gif oder Jpeg, dass ich in Notes importiere bleibt doch ein gif oder jpeg.

Ähm, hab vorhin erst halb gelesen, sorry.

AFAIK wird ein Bild, das man über die Zwischenablage irgendwo kopiert und in ein Richtextfeld einfügt, in dieses proprietäre NotesBitmap - Format umgewandelt. Darauf programmatisch zuzugreifen wohl ein Ding der Unmöglichkeit, daher eben dieser SPR mit der neuen Property.
Ein via Import eingefügtes Bild ist einfach (z.B. via DXL) zu greifen, dies behält das Format.

Michael
« Letzte Änderung: 14.01.05 - 21:07:44 von -Michael- »

Marinero Atlántico

  • Gast
Re: Bild aus DXL auslesen (Base64)
« Antwort #12 am: 14.01.05 - 21:09:45 »
... und wenn man es nicht über die Zwischenablage sondern als Objekt einbindet ???
... oder wenn man über ERstellen/Bild geht?

Wird das dann auch in ein spezielles Notesformat umgewandelt?

Gruß Axel

Marinero Atlántico

  • Gast
Re: Bild aus DXL auslesen (Base64)
« Antwort #13 am: 14.01.05 - 21:10:56 »
Da ich jetzt schon ne ganze Weile nach einer Möglichkeit suche, aber keine genaue Lösung finde,wäre das vielleicht mal was für die Best Practices Rubrik, oder??

Du hast ja schon angefangen  ;D
Wenn du fertig bist, kannst du es dann unter den Best Practices veröffentlichen  8)
(nicht böse, zynisch oder ironisch gemeint)

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: Bild aus DXL auslesen (Base64)
« Antwort #14 am: 14.01.05 - 21:13:30 »
... und wenn man es nicht über die Zwischenablage sondern als Objekt einbindet ???
... oder wenn man über ERstellen/Bild geht?

a) gute Frage. Müsste man testen (das Ergebnis schnell mal in XML/DXL exportieren um zu sehen was herauskommt)
b) ist identisch mit File/Import, sprich es wird dann als BMP/GIF/JPG etc. eingebunden und das Format wird beibehalten

Michael

Offline prong

  • Frischling
  • *
  • Beiträge: 22
  • I love YaBB 1G - SP1!
Re: Bild aus DXL auslesen (Base64)
« Antwort #15 am: 14.01.05 - 21:18:57 »
Werde mein besten geben  ;D

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: Bild aus DXL auslesen (Base64)
« Antwort #16 am: 14.01.05 - 21:23:05 »
Da ich jetzt schon ne ganze Weile nach einer Möglichkeit suche, aber keine genaue Lösung finde,wäre das vielleicht mal was für die Best Practices Rubrik, oder??

Du hast ja schon angefangen  ;D
Wenn du fertig bist, kannst du es dann unter den Best Practices veröffentlichen  8)
(nicht böse, zynisch oder ironisch gemeint)

Ja, man müsste die Ergebnisse eigentlich in eine Klasse packen.  ;)

Dabei könnte man dann gleich eine "IsRichtextEmpty" Property einbauen, da die Standard Notes/Domino-Klassen ein sauberes Ergebnis hier nicht zulassen, XML aber wohl schon.

Michael

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: Bild aus DXL auslesen (Base64)
« Antwort #17 am: 14.01.05 - 21:37:50 »
... und wenn man es nicht über die Zwischenablage sondern als Objekt einbindet ???
... oder wenn man über ERstellen/Bild geht?

a) gute Frage. Müsste man testen (das Ergebnis schnell mal in XML/DXL exportieren um zu sehen was herauskommt)
b) ist identisch mit File/Import, sprich es wird dann als BMP/GIF/JPG etc. eingebunden und das Format wird beibehalten

Michael

(a) wird nach meinem Test auch als <notesbitmap> über DXL ausgegeben, wenn die Quelle z.B. ein gif ist.

Interessant wäre es noch zu wissen, wie 3rd Party - Produkte darauf zugreifen. Bzw. ob diese das überhaupt können.

Michael

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Bild aus DXL auslesen (Base64)
« Antwort #18 am: 14.01.05 - 23:10:17 »
na so schwer ist das doch nicht.
was du hast sind irgendwelche Zeichen, die keinen Sinn auf den ersten Blick haben, weil sie in Base64 kodiert sind. Die Zeichen musst du dekodieren, dann hast du wieder Zeichen, ide keinen Sinn (zumindest für mich) haben, weil sie fast genauso aussehen, wie die vorher. Wenn du die Zeichen allerdings in eine Datei schreibst und die Datei in einem Bildbetrachtungsprogramm anschaust, dann solltest du was schönes sehen.
Und ja, du solltest den Schalter ConvertNotesbitmapsToGIF setzen, sonst bekommst du nämlich Zeichen raus, die kein Programm außer Notes versteht.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: Bild aus DXL auslesen (Base64)
« Antwort #19 am: 15.01.05 - 19:00:36 »
Hier hab ich eine Klasse verlinkt, um in LotusScript Base64 zu encodieren und decodieren:

Notes-Links.de: XML/DXL und Base64 in LotusScript

Michael

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz