Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Schnelle Bitmap verkleinerung (https://www.delphipraxis.net/101551-schnelle-bitmap-verkleinerung.html)

backdraft 15. Okt 2007 12:38


Schnelle Bitmap verkleinerung
 
Hallo zusammen,

ich suche eine Library oder Komponente mit der ich möglichst schnell ein Bitmap auf Bildschirmgröße verkleinern kann.
Ziel ist es, einen Rechnungsbeleg auf den Bildschirm zu verkleinern, so dass er trotzdem noch gut lesbar ist. Das Bild ist original in 1-bit (600dpi) und wird beim verkleinern auf 8-bit hochgesetzt um die Zeichen in grausstufen darstellen zu können.

Derzeit habe ich die GraphicEx Funktion "Stretch" im Einsatz, die aber viel zu langsam ist.

Weiss jemand eine andere Komponente (frei oder shareware ist total egal).
Hauptsache es ist richtig schnell.

Grüße Oliver

s-off 15. Okt 2007 12:41

Re: Schnelle Bitmap verkleinerung
 
Hallo,

warum zeigst Du Deine Grafik nicht in einem TImage an und bedienst Dich dann der Proportional-Eigenschaft, um die Grafik auf Bildschirmgröße anzupassen?

backdraft 15. Okt 2007 12:45

Re: Schnelle Bitmap verkleinerung
 
Zitat:

Zitat von s-off
Hallo,

warum zeigst Du Deine Grafik nicht in einem TImage an und bedienst Dich dann der Proportional-Eigenschaft, um die Grafik auf Bildschirmgröße anzupassen?

weil die Qualität mieserabel ist.
Da kann man keinen Buchstaben mehr lesen ...

Vjay 15. Okt 2007 13:48

Re: Schnelle Bitmap verkleinerung
 
Sämtliche gute Algorythmen brauchen ihre Zeit. Daher legt Windows z.B. die Thumbs.db an, um verkleinerte Bilder zu cachen und deshalb laden PictureViewer das nächste Bild auch immer im voraus.

backdraft 15. Okt 2007 14:26

Re: Schnelle Bitmap verkleinerung
 
Zitat:

Zitat von Vjay
Sämtliche gute Algorythmen brauchen ihre Zeit. Daher legt Windows z.B. die Thumbs.db an, um verkleinerte Bilder zu cachen und deshalb laden PictureViewer das nächste Bild auch immer im voraus.

Danke für den Tip, aber Assembler ist auch schneller als Delphi. Trotzdem programmieren nicht alle Assembler.
Photoshop brauch ca. 2 Sekunde das Bild in die gewünschte Qualität zu verkleinern, GraphicEx ca. 20 Sekunden.

Lossy eX 15. Okt 2007 15:12

Re: Schnelle Bitmap verkleinerung
 
Assembler ist auch nur dann schneller wenn man genau weiß was man tut. An den passenden Stellen eingesetzt lohnt es zwar richtig aber wunder sind trotzdem nicht drin. ;) Gewisse Dinge brauchen einfach ihre Zeit.

Ein paar Ideen keine Ahnung ob sie wirklich etwas bringen.
1. Du solltest mal schauen ob die GraphicEx evtl die Möglichkeit hat bei der du die Filtermethode einstellen kannst. Es wird häufig so etwas wie Lanczos oder Bicubic benutzt. Die brauchen länger als Linear oder ein Boxfilter, weil sie auch komplexer sind.

2. Für StretchBlt gibt es die Möglichkeit einen Modus einzustellen. Kann mir leider nie merken wie der heißt. Musste mal suchen. Damit kannst du unter XP ein Bild automatisch Glätten lassen wärend es dargestellt wird. Ich meine der hatte eine ganz nette Geschwindigkeit.

3. Zur Not kann man sich einen Boxfilter auch selber schreiben. Der muss ja nicht perfekt sein. Sollte aber trotzdem schneller als 20 Sekunden sein. Bzw da dein Bild wahrscheinlich auch aus mehr als 50% Weiß besteht könnte man solche Stellen auch recht schnell überspringen. Denn so etwas bleibt weiß. Ist aber eine sehr sehr spezielle Optimierung.

Nuclear-Ping 15. Okt 2007 15:25

Re: Schnelle Bitmap verkleinerung
 
Schau dir mal das an, das sollte sein, was du suchst: http://spotlight.de/zforen/dlp/m/dlp...1475-6567.html

generic 15. Okt 2007 15:33

Re: Schnelle Bitmap verkleinerung
 
ich nutzte für skalierungen/darstellung die gdi+.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:21 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