Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

BMP-Bild laden, anzeigen und speichern.

von RedakteurVoltaSeite 1 von 1

Die einfachste Art ein bmp-Bild unter FreeBASIC anzeigen zu lassen ist:

Screen 18,32         'ein Grafik-Fenster erstellen
Bload "deinBild.bmp" 'zeigt die 'deinBild.bmp' oben links im Fenster

Die bmp-datei sollte im gleichen Verzeichnis liegen, sonst musst du den Pfad mit angeben z.B. "C:/Bilder/deinBild.bmp".
Einen anderen Platz im Fenster zum anzeigen des Bildes können wir uns mit dieser einfachen Methode nicht aussuchen.

Dazu muss man das Bild in einen Speicherbereich laden und dann an eine wählbare Position auf dem Fenster anzeigen.
Da bekommen wir ein kleines Problem. Wenn du einen Speicherbereich reservieren möchtest, musst du schon angeben können wie viel Speicheplatz es den sein muss?
Wenigstens die Höhe und Breite des Bildes in Pixel musst du ermitteln, daraus errechnet FreeBASIC selbst den Speicherplatz.
Elegant ist es diese Angaben direkt aus der bmp-Datei mit deinem Bild auszulesen. Sieh dir mal das folgende Listing genau an:

Screen 18,32
'Damit brauchst du den Dateinamen nur einmal angeben
Dim As String dateiname = "deinBild.bmp"
Dim As Integer breit, hoch 'darin speichern wir die Werte ab

Dim As Integer ff = Freefile    'Anfrage welcher Übertragungsweg ist frei?
Open dateiname For Input As #ff 'öffne die Datei zum lesen
Get #ff, 19, breit              'Breite aus der BMP-Datei auslesen
Get #ff, 23, hoch               'Höhe aus der BMP-Datei auslesen
Close #ff                       'schließe die Datei

Dim bild As Any Ptr             'Zeiger erstellen der die Bildadresse speichert
bild = ImageCreate(breit,hoch)  'reserviert und berechnet den erforderlichen Speicher
                      'und gibt an den Zeiger die Adresse des reservierten Speichers.
Bload dateiname, bild 'lade das Bild in den Speicher, der Zeiger 'bild' hat die Adresse.
Put (100,100), bild   'Das geladene Bild ab Position (x, y) im Fenster anzeigen
Sleep
If bild <> 0 Then ImageDestroy bild  'den reservierten Speicherplatz freigeben
End

Auch wenn das bmp-Bild nicht die Farbvielfalt des Grafik-Fensters (32Bit = True Color) hat wird es farbrichtig dargestellt. Dafür sorgt die Bload - Routine, die das Bild auf die höhere Farbzahl des Fensters anpasst.
Wenn wir das Bild jetzt als BMP-Datei speichern wird es in der Farbanzahl des Grafik-Fensters gespeichert.
Wählt man jetzt den gleichen Dateinamen kann man z.B. aus einem BMP-Bild mit 256 Farben (8Bit) ein BMP-Bild mit True Color (32Bit) machen. Umgekehrt geht es nicht, die Bload - Routine kann nicht Bilder mit hoher Farbzahl in kleinere Farbanzahl wandeln.

Zum Speichern einer BMP-Datei ist nur eine Basiczeile nötig:

'speichere das Bild in "neuer_Name.bmp",
Bsave "neuer_Name.bmp", bild  'der Zeiger 'bild' hat die Adresse.

Das besondere an dem Bsave Befehl ist, gibt man einen Dateinamen an der mit '.bmp' endet wird auch eine Datei im BMP-Format erstellt.
Diese Datei kann man dann auch in 'Paint' oder anderen Zeichenprogrammen bearbeiten.

Hier ist noch ein Code-Beispiel was man sonst noch so mit der Bload - Routine anstellen kann.

Print "verdisch.."
Print "Viel Spaß damit"
Print "Volta"
Sleep
End

 

Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 22.06.2007 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 07.02.2008 von RedakteurVolta gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen