Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Bilder in RTF-Datei werden rieeeesig und fressen MB (https://www.delphipraxis.net/157630-bilder-rtf-datei-werden-rieeeesig-und-fressen-mb.html)

TheMiller 18. Jan 2011 23:38

Bilder in RTF-Datei werden rieeeesig und fressen MB
 
Hallo,

ich musste gerade feststellen, dass es relativ unkomfortabel ist, Bilder in eine RTF-Datei einzufügen.

Ich benutze den jvRichText-Editor (der Jedis), füge ein Bild ein (*.jpg|*.png) und speichere den Inhalt des Editors einmal in eine Textdatei und einmal in eine Datenbank (je nach Wille des Benutzers).

Nun habe ich gesehen, dass die Bilder als RTF-Text (und RTF-Tag) in der Datei gespeichert werden, anscheinend Pixel für Pixel. Jedenfalls wird die Datei auf diese Weise schnell mehrere MB groß (100kb png = 1,5MB RTF-Datei).

Gibt es da irgendwelche Optimierungsansätze?

Andererseits hat Word dieses Problem nicht. Was stellt Word mit den Bildern an, dass die sich nicht so entfalten?

Danke im Voraus!

s.h.a.r.k 19. Jan 2011 02:45

AW: Bilder in RTF-Datei werden rieeeesig und fressen MB
 
Wenn Pixel für Pixel gespeichert wird, dann ists ja nichts anderes als wie das BMP-Format und das heißt, dass die Komprimierung wegfällt, was PNG oder JPEG ausmacht. Ein 800x600-BMP-Image hat (laut Windows) 1,37 MB. Daher scheint mir das was du erwähnst hast auch sehr realistisch.

Schon mal geschaut, ob es vielleicht eine neue Version dieser Jedi-Komponente gibt? Vielleicht unterstützt diese dann eine Komprimierung.

Ich hab grad auch auf Wikipedia gesehen, dass es da verschiedene Versionen gibt. Vielleicht hängt es ja auch damit zusammen?!

Medium 19. Jan 2011 05:43

AW: Bilder in RTF-Datei werden rieeeesig und fressen MB
 
Es ist zudem davon auszugehen, dass innerhalb von RTF Base64 zum Tragen kommt, was ca. einer Vervierfachung der unkomprimierten Größe nahekommen sollte - in s.h.a.r.ks Beispiel also schon rund 7,3MB (32bpp angenommen). Da RTF selbst einer Markup-Language ähnlich kommt, und daher denke ich nicht so prima mit Binärdaten zurecht käme, wird da selbst mit einem RLE nicht mehr arg viel drin sein (je nach Bild).
Es ist aber durchaus möglich, dass es eine Erweiterung von RTF gibt, die Binärdaten einleitet, wodurch quasi beliebige Formate einbettbar wären. Wenn es aber nicht zum Baseline-RTF gehört, ist es rein der Tagesform der Implementierer überlassen ob diese Option unterstütz wird :)

Bernhard Geyer 19. Jan 2011 07:45

AW: Bilder in RTF-Datei werden rieeeesig und fressen MB
 
Schau dir mal TRichView an. Ich denke dort werden alle möglichkeiten von RTF ausgeschöpft.
Zwei Nachteile: Exe wird größer und Komponente kostet ein paar €.

p80286 19. Jan 2011 10:31

AW: Bilder in RTF-Datei werden rieeeesig und fressen MB
 
Zitat:

Zitat von DJ-SPM (Beitrag 1075700)
Andererseits hat Word dieses Problem nicht. Was stellt Word mit den Bildern an, dass die sich nicht so entfalten?

Das halte ich für ein Gerücht!
Zumindestens bis incl. Office 2003 bläst jedes eingebettes Bild eine .RTF Datei ganz ordentlich auf.
vielleicht hilft ein Blick in die RTF-Specs weiter:
Zitat:

Pictures
An RTF file can include pictures created with other applications. These pictures can be in hexadecimal (default) or binary format. Pictures are destinations, and begin with the \ pict control word. A picture destination has the following syntax:
<pict> '{' \ pict (<brdr>? & <shading>? & <picttype> & <pictsize> & <metafileinfo>?) <data> '}'
<picttype> \ macpict | \ pmmetafile | \ wmetafile | \ dibitmap <bitmapinfo> | \ wbitmap <bitmapinfo>
<bitmapinfo> \ wbmbitspixel & \ wbmplanes & \ wbmwidthbytes
<pictsize> ( \ picw? & \ pich?) \ picscalex? & \ picscaley? & \ picscaled? & \ piccropt? & \ piccropb? & \ piccropr? & \ piccropl?
<metafileinfo> \picbmp & \picbpp
<data> ( \ bin #BDATA) | #SDATA
Gruß
K-H

TheMiller 23. Jan 2011 10:45

AW: Bilder in RTF-Datei werden rieeeesig und fressen MB
 
Hallo,

vielen Dank für die Antworten. In die RTF-Specs habe ich auch wieder mal nachgelesen. Da gibt es unter anderem ja auch die Möglichkeiten für Binary etc...

Auch die TRichView habe ich mir öfter schon angeschaut, aber dieses Geld (ist ja schon recht ordentlich), möchte ich derzeit nicht in dieses Projekt stecken.

Kurzum: Ich muss dieses Problem leider erstmal bei Seite legen, da derzeit andere Probleme wichtiger sind. Aber ich denke, ich werde diesen Thread wieder hochholen.

Dennoch vielen Dank für die Antworten - vielleicht entscheide ich mich doch irgendwann für die TRichView?

Danke und Grüße!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz