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

 

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