Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Bitmap zu Ascii , schnelle Routiene gesucht. (https://www.delphipraxis.net/144916-bitmap-zu-ascii-schnelle-routiene-gesucht.html)

turboPASCAL 19. Dez 2009 20:15


Bitmap zu Ascii , schnelle Routiene gesucht.
 
Hi,

ich suche eine Routine, die schnell Bitmap zu Ascii-Zeichencode wandeln kann.

Medium 19. Dez 2009 23:45

Re: Bitmap zu Ascii , schnelle Routiene gesucht.
 
Meinst du damit eine darstellbare Binärcodierung wie Base64, oder willst du ASCII-Art automatisch erzeugen? Bei letzterem gibt's 3 zu unterscheidende Varianten, die sich im Aufwand teils erheblich voneinander unterscheiden:
1) Farbbitmap zu beliebigen Zeichen (z.B. Zufallstext), so dass ein Zeichen nur in entsprechnder Farbe sein muss
2) S/W Bitmaps, bei denen die Formen auf Sub-Character-Ebene genau nachgebildet werden sollen
3) Kombi aus 1 und 2

Du müsstest also schon etwas genauer werden ;)

turboPASCAL 20. Dez 2009 07:03

Re: Bitmap zu Ascii , schnelle Routiene gesucht.
 
Wie man ein Bitmap in Ascii-Zeichen übertragen kann ist für mich kein Problem.

Image Matrix FX ASCII Art
Delphi für Win32 Bitmap to ASCII - blinkende Zeichen (Problemchen)

Nur sind die meine eigenen Routinen für meine Zwecke, also eine schnelle Abfolge von Bildern anscheinend etwas zu langsam.
Das auslesen der Farbwerte des Bitmaps wird direkt über den Pointer erledigt, also nix mit Canvas.Pixels[].
Zu dem ich auch keinen TCanvas habe. ;)

turboPASCAL 20. Dez 2009 20:11

Re: Bitmap zu Ascii , schnelle Routiene gesucht.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also das mit dem Umwandeln der Zeichen und dann noch passend Farbe dazu ist nicht so einfach.
Ich könnte ein wenig Hilfe gebrauchen.

Medium 20. Dez 2009 23:26

Re: Bitmap zu Ascii , schnelle Routiene gesucht.
 
Am besten wäre es wohl, wenn du den konkreten Source posten würdest den es zu optimieren gilt.

Valle 20. Dez 2009 23:28

Re: Bitmap zu Ascii , schnelle Routiene gesucht.
 
Mal so am Rande angemerkt...

Ich habe mal vor einiger Zeit mehr oder weniger aus Versehen den VLC Player (oder wars der MPlayer?) in der Konsole mit einem Video gestartet. Dabei hat der Player das Video in Echtzeit (!) in ASCII-Art gewandelt. Das heißt also, dass es möglich sein muss, es schneller zu machen. :mrgreen:

Liebe Grüße,
Valle

Namenloser 21. Dez 2009 02:27

Re: Bitmap zu Ascii , schnelle Routiene gesucht.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab da mal was gebastelt - multithreaded :o

Leider hast du ja kein Testvideo o.ä. beigelegt, weshalb ich etwas improvisieren musste. (Meine Improvisation ist wahnsinnig kreativ, so viel sei verraten :stupid: )

Das Programm benötigt leider die Graphics32, weil diese komfortablen Zugriff auf die Bildrohdaten liefert, und ich zu faul war, das ganze mit dem normalen TBitmap zu machen - bzw. eigentlich hab ich's versucht, aber das Programm ist dann eingefroren - wahrscheinlich ist TBitmap.Scanline nicht Threadsafe. :wall:

Der Code ist teilweise etwas hässlich und für Nicht-Eingeweihte möglicherweise auch etwas unverständlich. Falls das der Fall sein sollte, kannst du mich gerne dazu befragen.

[edit]
Achja, es fehlt auch noch eine gescheite Fehlerbehandlung. Derzeit dürfte es z.B. ziemlich sicher krachen, wenn die Höhe des Bildes niedriger ist als die Anzahl der Threads.

Btw: Routine schreibt man ohne ie.
[/edit]

turboPASCAL 21. Dez 2009 16:05

Re: Bitmap zu Ascii , schnelle Routiene gesucht.
 
Erst einmal schonen Dank.

Das mit der Geschwindigkeit passt nun. Was noch zu knacken wäre ist die Sache mit der verflixten Farbe.

Namenloser 21. Dez 2009 16:33

Re: Bitmap zu Ascii , schnelle Routiene gesucht.
 
Zitat:

Zitat von turboPASCAL
Das mit der Geschwindigkeit passt nun. Was noch zu knacken wäre ist die Sache mit der verflixten Farbe.

Für die Farbe würde ich das Bild erst mal in HSL umrechnen. Als Farbe nimmst du dann den Hue (H), und die Helligkeit (L) stellst du über den Zeichencode dar. Für die Farbe würde sich evtl. ein weiteres Array anbieten (kann man wieder schön in den Threads befüllen), wie du das ganze dann ausgibst hängt natürlich von deiner Ausgabemethode ab - Konsole? Canvas? ...?

himitsu 21. Dez 2009 16:36

Re: Bitmap zu Ascii , schnelle Routiene gesucht.
 
Selbst wenn TBitmap.Scanline nicht threadsave ist, könnte man sich die Scanline-Pointer vorher holen und an die Threads abgeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.
Seite 1 von 2  1 2      

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