Tutorial
JPEG Dateien anzeigen mit jpeg4fb
Was es mit JPEG (Joint Photographic Experts Group) - Dateien auf sich hat kann man hier nachlesen
http://de.wikipedia.org/wiki/JPEG .
Wer sich noch ausführlicher damit beschäftigen möchte findet hier Details
Die JPEG - Kompression .
jpeg4fb
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
1 2
Zusätzliche Informationen und Funktionen |
- Das Tutorial wurde am 03.10.2007 von Volta angelegt.
- Die aktuellste Version wurde am 31.01.2013 von Volta gespeichert.
|
|