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

JPEG Dateien anzeigen mit jpeg4fb

von RedakteurVoltaSeite 1 von 2

Was es mit JPEG (Joint Photographic Experts Group) - Dateien auf sich hat kann man hier nachlesen
Externer Link!http://de.wikipedia.org/wiki/JPEG .
Wer sich noch ausführlicher damit beschäftigen möchte findet hier Details
Externer Link!Die JPEG - Kompression .


jpeg4fb

Externer Link!JPEG loader by Antoni Gual 12/1999
commented version 10/2003
Ported to FB 5/2005
Adapted to FB0.17 by Luke Landriaut 11/2006


Der JPEG loader wurde von Antoni Gual ursprünglich in und für QBasic geschrieben und nachträglich auf die FB - Syntax umgeschrieben.
Das merkt man dem Quelltext an, es sind einige unbenutzte Programmteile darin und ist wenig optimiert. Aber er funktioniert, zumindest mit 'normalen' JPG - Dateien konnte ich das austesten.
Die Routinen laufen auf FreeBASIC ab Version 0.17. Leider war die deklarierte 'sub jpegframesize' nicht im Quelltext zu finden, dort hieß sie noch 'getframesize' und muss die abgefragten Werte 'Byref' übergeben.
Bei den Beispielen von Antoni sollte man darauf achten, dass sie unter der FBEDIT als Projekt (mit jpeg4fb.BAS) kompiliert wurden. Bei der FBIDE muss '#include "jpeg4fb.BAS"' angegeben werden.

Die Lib jpeg4fb besteht aus 2 Dateien:
jpeg4fb.bas
jpeg4gfxlib.bi

3 Funktionen und 2 Subs sind in der jpeg4gfxlib.bi deklariert:

#define jpg_center &h10000000

'renders from file to screen
declare sub jpeg2screen(jpg_file as string,x0 as integer=jpg_center,_
                        y0 as integer=jpg_center,x1 as integer=0,_
                        y1 as integer=0,x2 as integer=-1,y2 as integer=-1)

'creates a PUT buffer and renders a secttion of the file to it
declare function jpegget(jpg_file as string,x as integer=-1,y as integer=-1,_
                         x0 as integer=jpg_center,y0 as integer=jpg_center) as any ptr

'creates a put buffer and renders a section of a jpeg stored in a buffer  to it
declare function jpeggetmem(jpegptr as ubyte ptr, jpegsize as uinteger,x as integer=-1,_
                            y as integer =-1,x0 as integer =jpg_center,_
                            y0 as integer=jpg_center) as any ptr

'prints a string from the error number returned from the renderer
declare FUNCTION printerror as string

'reads the frame size from a jpeg file
declare sub jpegframesize (byval jpg_file as string, byref sizex as integer, _
          byref sizey as integer, byref components as integer, byref fmt as integer)

'error codes
#define err_ok        0
#define err_escpress  100
#define err_nogfxlib  101
#define err_palmode   102
#define err_nofile    103
#define err_fnotfound 104
#define err_fnotexist 105
#define err_fnojpeg   106
#define err_fnoframe  107
#define err_progframe 108
#define err_diffframe 109
#define err_arithcode 110
#define err_quantprec 111
#define err_mt2huff   112
#define err_soimispl  113
#define err_smplsz    114
#define err_mt3comp   115
#define err_notalltbl 116
#define err_mt2qtbl   117
#define err_a0notjfif 118
#define err_markunk   119
#define err_putbuff   120
#define err_scrbuff   121
#define err_getoutl   122

common shared jpegerr as integer ',errtxt as string

Man kann mit #include "jpeg4fb.bas" die Dateien direkt in das eigene Programm einbinden.
Die jpeg4fb bietet Funktionen zum laden einer JPG - Grafik direkt in einen gfx-Screen (wie Bload für BMP - Dateien) oder in ein gfx - Image.
Mit jpegget werden die JPG - Grafik aus einer Datei, mit jpeggetmem aus einem Speicherbereich ('Resource') in ein Image (32 Bit) geladen.
Die Sub jpegframesize ermittelt die Breite und Höhe der Grafik aus der JPG - Datei.
Für 'printerror jpegerr' sind Fehlertexte (englisch) definiert.

Die etwas korrigierten Dateien mit weiteren Beispielen habe ich hier als Download eingestellt:
Download: jpeg4fb.ZIP

 

Gehe zu Seite Gehe zu Seite  1  2  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 03.10.2007 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 31.01.2013 von RedakteurVolta gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen