Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Schnelle Bild-Laderoutine

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 21.06.2005, 17:21    Titel: Schnelle Bild-Laderoutine Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 21.06.2005, 19:13    Titel: Antworten mit Zitat

gandro hat Folgendes geschrieben:

Ich denke eine schnelle und einfache Methode wäre per BLOAD/BSAVE,

Dann nimm's doch einfach lächeln

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 lächeln

Zum Thema Palette: Speichere diese doch bei Konvertierung ebenfalls in einer Datei.
Auf diese kannst du dann immer noch zugreifen.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 21.06.2005, 19:47    Titel: Antworten mit Zitat

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 lächeln

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 lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 21.06.2005, 19:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 21.06.2005, 20:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 21.06.2005, 20:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 21.06.2005, 22:16    Titel: Antworten mit Zitat

Kennt eigentlich jemand 'nen Inline-ASM BMP-Loader? Dürfte ja nicht allzu schwer sein!
btw: In Skill's Routine könnte man ja noch statt PSET einfach POKE verwenden..
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 21.06.2005, 22:23    Titel: Antworten mit Zitat

Bei mir ist POKE in Screen 13 übrigens langsamer als PSET. Keine Ahnung wieso, ich hab's mal mit einem Beispiel aus der MonFAQ ausprobiert. neutral
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
stef



Anmeldungsdatum: 13.01.2005
Beiträge: 102

BeitragVerfasst am: 22.06.2005, 09:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 22.06.2005, 20:31    Titel: Antworten mit Zitat

BSAVE und BLOAD klappen mit deinem Code nur fehlerfrei bei SCREEN 13.

Für die anderen einfach mal auf dreaels Seite schauen. lächeln

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 22.06.2005, 21:12    Titel: Antworten mit Zitat

@Gandro: Wolltest du nicht mal ein Fake-OS machen? *KopfKratz* Wie steht's damit? lächeln
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
stef



Anmeldungsdatum: 13.01.2005
Beiträge: 102

BeitragVerfasst am: 23.06.2005, 09:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 23.06.2005, 12:30    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 23.06.2005, 21:14    Titel: Antworten mit Zitat

Sebastian hat Folgendes geschrieben:
@Gandro: Wolltest du nicht mal ein Fake-OS machen? *KopfKratz* Wie steht's damit? lächeln


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". happy

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz