Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
gandro

Anmeldungsdatum: 18.02.2005 Beiträge: 108 Wohnort: Schweiz
|
Verfasst am: 21.06.2005, 17:21 Titel: Schnelle Bild-Laderoutine |
|
|
Hallo, ich bin auch der Suche nach einer schnellen Laderoutine für Bilder. Es gibt ja einige Bitmap-Laderoutinen, dieses sind aber vergleichsweise recht langsam, besonders auf älteren Rechnern wie meinem 40MHZ 386er.
Ich denke eine schnelle und einfache Methode wäre per BLOAD/BSAVE, allerdings kann ich damit keine Bitmaps konvertieren, da diese ja ne Pallette haben und diese auch mitgenommen werden muss.
Nun, kennt jemand eine schnelle Bild-Anzeigeroutine, welche die normale Screen 13 Auflösung unterstützt und dass sich BMPs in das Format des Loaders konvertieren lassen, so dass nur eine Datei entsteht?
PS: Es sollte wirklich eine schnelle Routine sein, da es auch auf älteren Rechnern laufen sollte. Auch externe Programme per SHELL mag ich nicht so... |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 21.06.2005, 19:13 Titel: |
|
|
gandro hat Folgendes geschrieben: |
Ich denke eine schnelle und einfache Methode wäre per BLOAD/BSAVE,
|
Dann nimm's doch einfach
Lade vorher in einem QuickBASIC-Prog ein Bitmap mit einem gewöhnlichen Anzeigeprogramm,
und dann speicherst du es mit BSAVE ab. Während der Laufzeit kann dann dein Programm die BSAVE-Datei laden,
und das ist doch, was du wolltest
Zum Thema Palette: Speichere diese doch bei Konvertierung ebenfalls in einer Datei.
Auf diese kannst du dann immer noch zugreifen.
jb |
|
Nach oben |
|
 |
gandro

Anmeldungsdatum: 18.02.2005 Beiträge: 108 Wohnort: Schweiz
|
Verfasst am: 21.06.2005, 19:47 Titel: |
|
|
jb hat Folgendes geschrieben: | gandro hat Folgendes geschrieben: |
Ich denke eine schnelle und einfache Methode wäre per BLOAD/BSAVE,
|
Dann nimm's doch einfach
Lade vorher in einem QuickBASIC-Prog ein Bitmap mit einem gewöhnlichen Anzeigeprogramm,
und dann speicherst du es mit BSAVE ab. Während der Laufzeit kann dann dein Programm die BSAVE-Datei laden,
und das ist doch, was du wolltest
Zum Thema Palette: Speichere diese doch bei Konvertierung ebenfalls in einer Datei.
Auf diese kannst du dann immer noch zugreifen.
jb |
auf die idee bin ich ja auch schon gekommen, ich möchte aber das Bild in einer Datei... |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 21.06.2005, 19:58 Titel: |
|
|
Hallo.
Dann mach doch vorne an die BSAVE Datei 768 Bytes mit den Paletteninformationen bei 256 Farben.
Code: | EinPalettenEintrag$ = CHR$(r%)+CHR$(g%)+CHR$(b%) |
Das puttest du dann für alle Farben von 0-255 und schon hast du die Palette mitgespeichert. Wenn du das vorne an die Datei tust, machst du am Anfang
Code: | SCREEN 13
DIM Pal AS STRING
Pal = SPACE$(768)
OPEN "MEINBILD.BIL" FOR BINARY ACCESS READ AS #1
GET #1,,Pal
Call SetzPalette(Pal)
'... |
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
gandro

Anmeldungsdatum: 18.02.2005 Beiträge: 108 Wohnort: Schweiz
|
Verfasst am: 21.06.2005, 20:02 Titel: |
|
|
Wie müsste ich das jetzt genau machen? Also erst die Palette in die Datei schreiben, aber wie dann genau beim Laden vorgehen, per BLOAD?
Wäre jemand so nett und macht ein Beispiel? |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 21.06.2005, 20:38 Titel: |
|
|
Hallo
Mein BMP-Lader (nur für 256-Farben Bitmaps) ist vielleicht nicht der schnellste, dafür aber der kleinste, den ich bis jetzt kenne.
Code: | SCREEN 13: CLS
DIM byte AS STRING * 1
OPEN "bild.bmp" FOR BINARY AS #1
GET #1, 19, br&
GET #1, 23, ho&
FOR f = 0 TO 255
OUT 968, f
FOR rgb = 0 TO 2
GET #1, 57 + f * 4 - rgb, byte
OUT 969, FIX(ASC(byte) / 4)
NEXT: NEXT
normbr = 4 * FIX((br& + 3) / 4)
FOR x = 0 TO br& - 1
FOR y = 0 TO ho& - 1
GET #1, x + y * normbr + 1079, byte
PSET (x, (ho& - 1) - y), ASC(byte)
NEXT: NEXT
CLOSE #1 |
Wer's ausprobieren möchte, kann sich hier auch ein passendes Bild dazu runterladen: http://www.skilltronics.de/runterlader/bild.bmp
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
stef
Anmeldungsdatum: 13.01.2005 Beiträge: 102
|
Verfasst am: 22.06.2005, 09:52 Titel: |
|
|
So ein Zufall, ich mache auch gerade Experimente über dieses Thema. Das Bild laden ist ja kein Problem, aber wenn es dann an die Befehle BSAVE und BLOAD geht, dann wird es schwierig. Ich habe folgendes aus der MonsterFAQ abgeschrieben:
Code: | CONST Zieldatei = "..\Bild16.dat"
CALL BMP16.laden("..\Bild16.bmp")
'--- Bild speichern ---
DEF SEG = &HA000
BSAVE Zieldatei$, 0, 64000
DEF SEG
CLS
SLEEP 1
'--- Bild laden ---
DEF SEG = &HA000
BLOAD Zieldatei$, 0
DEF SEG |
Das Ergebnis beim Laden ist aber ein reines Schwarz-Weiß-Bild. Außerdem wäre es noch interessant, zu erfahren ob man mit dem Befehl mehre Arrays nacheinander in eine Datei packen kann? Ich habe das Gefühl, das dies nicht vorgesehen ist. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 22.06.2005, 20:31 Titel: |
|
|
BSAVE und BLOAD klappen mit deinem Code nur fehlerfrei bei SCREEN 13.
Für die anderen einfach mal auf dreaels Seite schauen.
jb |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
stef
Anmeldungsdatum: 13.01.2005 Beiträge: 102
|
Verfasst am: 23.06.2005, 09:55 Titel: |
|
|
Herrje immer dieser Screen 13. Na gut zu wissen.
Ich mache es jetzt doch mit dem GET-Befehl und lese vier mal ein Viertel des Bildschirminhaltes aus in ein Array, das ich dann mit einer FOR-Schleife in einer Datei ablege. Beim laden werden dann die vier Bildschirmteile natürlich auch nacheinander wieder geladen und ausgegeben, aber bei mir läuft das sehr schnell ab. Jedenfalls wesentlich schneller, als bei einer BMP-Laderoutine. Man müßte mal wissen, wie schnell das dann auf einem langsamen 486ger aussehen würde. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 23.06.2005, 12:30 Titel: |
|
|
Naja, du könntest doch auch einfach das ganze &HA000-Segment abspeichern, und
dann wieder laden, das ginge dann "in einem Rutsch".
jb |
|
Nach oben |
|
 |
gandro

Anmeldungsdatum: 18.02.2005 Beiträge: 108 Wohnort: Schweiz
|
Verfasst am: 23.06.2005, 21:14 Titel: |
|
|
Sebastian hat Folgendes geschrieben: | @Gandro: Wolltest du nicht mal ein Fake-OS machen? *KopfKratz* Wie steht's damit?  |
nunja, dieses FakeOS gibts ja schon seit 2 Jahren und es stammt nicht von mir alleine...
Aber im moment proggen wir daran, obwohl es eigentlich kein Fake-OS mehr ist, sondern eher ne FreeDOS Distribution zum selberbastlen. Frei nach dem Motto "Build your own DOS".
Nur ist da im Vergleich zu früheren Versionen nicht mehr viel QBasic da drin. Mehr Infos über dieses Fake-OS Namens JewelOS (oder früher noch MicroOS) findest du hier:
http://plexinola.pl.funpic.de/wiki/doku.php?id=products:jewelos
Die erste Beta von JewelOS 1.0 (also die dritte Generation dieses Fake-OSs) sollte morgen erscheinen, vll. post ich es dann unter Projektvorstellenungen...
Wie gesagt, ob es jemand wirklich benutzt sei dahin gestellt (auch wenn es eine Version bis in die USA und Finnland geschafft hat), auch dass es vll. nicht das ist auf was die Welt gewartet hat ist egal, aber wir machen es ja Just for Fun...
Achja: Und den Bild-Loader brauch ich eben für den Splash-Screen. |
|
Nach oben |
|
 |
|