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

PNG-Bilder anzeigen und speichern

von RedakteurVoltaSeite 2 von 5

Die FBpng-Bibliothek


Die FreeBASIC PNG Library wird von Simon Nash (yetifoot) entwickelt und ist innerhalb von FreeBASIC (zumindest unter Windows) wohl die einfachste Lösung, PNG-Bilder zu laden und zu speichern.
Sie bietet unter anderem die Möglichkeit an, die Bilder gleich in einen OpenGL-kompatiblen Bildpuffer zu laden.
Die Bibliothek kann hier heruntergeladen werden: Download

Deklaration, Laden von PNG-Grafiken

Das Einbinden der Bibliothek ist inzwischen recht einfach, da sie direkt mit FreeBASIC als statische Bibliothek mitgeliefert wird und somit keine externen Bibliotheken nötig sind:

#include "fbpng.bi"

Das war's auch schon. Nun kann mit der Funktion png_load() ein Bild in einen FB-Bildpuffer geladen werden.

#include "fbgfx.bi" 'für "fb.Image"-Referenz
#include "fbpng.bi"

Dim buffer As fb.Image Ptr = png_load("bild.png")

Und schon befindet sich in "buffer" ein FBGFX-Bildpuffer mit dem geladenen Bild! Ist etwas schief gelaufen, wird 0 zurückgegeben.
Soll das Bild als OpenGL-Textur dienen, so empfiehlt es sich, dieses gleich automatisch umwandeln zu lassen:

#include "fbgfx.bi" 'für "fb.Image"-Referenz
#include "fbpng.bi"

Dim buffer As fb.Image Ptr = png_load("texture.png", PNG_TARGET_OPENGL)

Wichtig: Ab Version 1.9.1 muss ein mit png_load() ersteller Puffer auch mit png_destroy() zerstört werden!

png_destroy(buffer)

Speichern


Das Speichern von Grafiken im PNG-Format ist genau so einfach wie das Laden solcher:

png_save("neuegrafik.png", buffer)

Der erste Parameter gibt den Dateinamen an, der zweite die Adresse eines gültigen FBGFX-Puffers.

Abfrage der Grafikgröße

#include "fbpng.bi" 'alle nötigen PNG - Routinen werden in unser Programm eingebunden.

Dim As Integer hoch, breit 'damit fragen wir die Werte ab
png_dimensions("test.png", breit, hoch)
If breit > 0 And hoch > 0 Then
  Print "Breite : "; breit; " Pixel"
  Print "Hoehe  : "; hoch;  " Pixel"
Else
  Print "Fehler, PNG-Datei beschaedigt oder nicht vorhanden!"
End If
Sleep

Die Sub png_dimensions öffnet die PNG - Datei und gibt die ermittelten Werte an die angegebenen Variablen.
Im Fehlerfall wird 0 in den Variablen angegeben.

 

Gehe zu Seite Gehe zu Seite  1  2  3  4  5  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 19.09.2007 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 11.12.2013 von RedakteurSt_W gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen