Tutorial
PNG-Bilder anzeigen und speichern
von Volta | Seite 5 von 5 |
ploadlib - PNG image loader for use in FreeBASIC programs. Copyright (C) 2006 Matt Netsch, Matthew Fearnley
Laden und anzeigen einer PNG - Grafik mit Pload.
#include "ploadlib.bas" 'die ploadlib.bas wird in unser Programm eingebunden.
Screen 18, 32 'erstellt ein Grafikfenster
Dim As Any Ptr img 'Pointer (Zeiger) auf das Image definieren
'die Pload - Funktion benötigt nur den Dateinamen
img = Pload( "test.png" )
If img <> 0 Then 'wurde dem Pointer eine Adresse mitgegeben?
Put( 0, 0 ), img 'ja, dann das Bild anzeigen
Imagedestroy img 'den belegten Speicherbereich freigeben
Else
Print "Fehler beim laden der PNG-Grafik! FehlerNr: " & Pload_GetError()
End If
Sleep
Die Funktion gibt eine Adresse auf das Image an, im Fehlerfall ist dies Null (0) und über die Funktion Pload_GetError kann man eine Fehlernummer ausgeben.
Dies ist eher für den Programmentwickler gedacht, da der Anwender mit dieser Fehlernummer nichts anfangen kann.
Das erstellte Image wird im eingestellten Screen - Format (8, 16 oder 32 Bit) mit dem neuen Header erstellt.
Wenn eine PNG - Grafik nur 16farbig ist, wie die test.png, kann sie auch im 8Bit Screen - Format dargestellt werden.
#include "ploadlib.bas"
Screen 18, 8 'erstellt ein Grafikfenster für 256 Farben
Color 15, 7
Cls
Dim As Any Ptr img = Pload( "test.png" )
If img Then
Put (1,1), img, trans
Imagedestroy img
Else
Print "Fehler beim laden der PNG-Grafik! FehlerNr: " & Pload_GetError()
End If
Sleep
Der Versuch eine PNG - Grafik mit höherer Farbtiefe als das eingestellte Screen - Format anzuzeigen wird einen Fehler (FehlerNr. 6) ergeben.
Laden und anzeigen einer PNG - Grafik mit MPload.
Die Funktion MPload läd eine PNG - Grafik aus dem Speicherbereich in ein Image, wie hier schon bei der FBpng beschrieben.
Dim As Any Ptr StartFile 'Pointer für den Anfang des Files
Dim As Uinteger LenFile 'Variable für die Länge des Files
Asm
.balign 16
jmp START_OF_PROG 'springe zum Label START_OF_PROG
.balign 4
START_OF_FILE: 'ab hier beginnt die eingebundene Datei
.incbin "./test.png"
END_OF_FILE: 'hier endet die eingebundene Datei
.balign 16
START_OF_PROG:
lea ebx, START_OF_FILE 'Lade die Adresse des Label START_OF_FILE nach ebx
mov dword Ptr [StartFile], ebx 'Speicher die Adresse im Pointer StartFile
lea eax, END_OF_FILE 'Lade die Adresse des Label END_OF_FILE nach eax
Sub eax, ebx 'berechne eax - ebx = Länge des Files
mov dword Ptr [LenFile], eax 'Speicher die Länge des Files in der Variablen LenFile
End Asm
#include "ploadlib.bas" 'die ploadlib.bas wird in unser Programm eingebunden.
Screen 18, 8 'erstellt ein Grafikfenster für 256 Farben
Color 0, 7 'Hintergrund in grau
Cls
Dim As Any Ptr img 'Pointer (Zeiger) auf das Image definieren
'die MPload - Funktion benötigt
'einen Pointer auf den Anfang der Datei und die Dateilänge
img = MPload( StartFile, LenFile )
If img <> 0 Then 'wurde dem Pointer eine Adresse mitgegeben?
Put( 0, 0 ), img, trans 'ja, dann das Bild anzeigen
Locate 20,1
Print "Breite : "; Cast( Integer Ptr, img)[2]; " Pixel"
Print "Hoehe : "; Cast( Integer Ptr, img)[3]; " Pixel"
Imagedestroy img 'den belegten Speicherbereich freigeben
Else
Print "Fehler beim laden der PNG-Grafik! FehlerNr: " & Pload_GetError()
End If
Sleep
Man kommt auch ohne zusätzliche Funktion der Library an die Abmaße der Grafik, hier werden die Werte aus dem erstellten Image gelesen.
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|