Seite 1 von 3
Von libSDL_image zu "normalen" Image
Verfasst: 31.05.2009 13:08
von Tompazi
Wie komme ich von sowas:
Code: Alles auswählen
Image$ = "sample.gif"
If OpenLibrary(0,"/usr/lib/libSDL_image-1.2.so.0.1.5") And ExamineLibraryFunctions(0)
SDL_Surface *image;
image=CallFunction(0,"IMG_LoadTyped_RW",SDL_RWFromFile_(Image$, "rb"), 1, "GIF")
EndIf
auf ein normales Bild mit dem ich mit den PB Funktionen weiter arbeiten kann?
MfG Tompazi
PS: Code scheint (!) zu funktionieren
Referenz
http://jcatki.no-ip.org:8080/SDL_image/ ... .html#SEC1
Verfasst: 01.06.2009 12:28
von Tompazi
Niemand?
MfG Tompazi
Verfasst: 01.06.2009 12:58
von Kaeru Gaman
eine Zeile ist nicht übersetzt:
muss wohl lauten
und in der nächsten zeile muss "image" dann auch ein pointer sein.
schau dir halt mal die Struct SDL_Surface und die vom Image in PB an,
irgendwie kann man das bestimmt übertragen.
Verfasst: 01.06.2009 14:54
von Tompazi
danke
hmm, also könnte ich aus *image.SDL_Surface alle Daten herauslesen und sie dann per CreateImage() + Point() wieder auf ein Bild schreiben
http://sdl.beuc.net/sdl.wiki/SDL_Surface
http://sdl.beuc.net/sdl.wiki/SDL_PixelFormat
nur wie komme ich da an alle Bild/Pixelinformationen ran?
MfG Tompazi
Verfasst: 01.06.2009 15:57
von Kaeru Gaman
Code: Alles auswählen
typedef struct SDL_Surface {
Uint32 flags; /* Read-only */
SDL_PixelFormat *format; /* Read-only */
int w, h; /* Read-only */
Uint16 pitch; /* Read-only */
void *pixels; /* Read-write */
SDL_Rect clip_rect; /* Read-only */
int refcount; /* Read-mostly */
/* This structure also contains private fields not shown here */
} SDL_Surface;
so wie ich das jetzt interpretiere:
*pixels ist der pointer zum Speicherbereich, in dem hintereinander weg die Bildinformationen stehen.
die zeilen haben eine länge von
pitch, die bildgröße ist w * h.
wie die Pixels codiert sind sagt dir der Inhalt der SDL_PixelFormat struktur...
wenn das Pixelformat identisch ist, müßtest du mit MemCopy einfach von *pixel in dein eigenes Image rüberziehen können....
Verfasst: 01.06.2009 23:41
von Tompazi
und wie krieg ich das? mit peek?
MfG Tompazi
Verfasst: 02.06.2009 00:19
von Kaeru Gaman
am besten definierst du dir die strukturen, damit du direkt mit stukturierten pointern arbeiten kannst.
im Abschnitt zu SDL_PixelFormat steht weiter unten noch ein bissel mehr dazu, wie man drauf zugreifen kann.
Verfasst: 02.06.2009 15:23
von Tompazi
So irgendwie?
*image() is not a function, array, macro or linked list.
Code: Alles auswählen
Image$ = "sample.gif"
Structure My_SDL_PixelFormat
*palette
BitsPerPixel.b
BytesPerPixel.b
RGBAmask.b
RGBAloss.b
RGBAshift.i
colorkey.i
alpha.b
EndStructure
Structure My_SDL_Surface
flags.i
*format.My_SDL_PixelFormat
h.i
w.i
pitch.w
EndStructure
If OpenLibrary(0,"/usr/lib/libSDL_image-1.2.so.0.1.5") And ExamineLibraryFunctions(0)
Define *image.My_SDL_Surface
*image=CallFunction(0,"IMG_LoadTyped_RW",SDL_RWFromFile_(Image$, "rb"), 1, "GIF")
Debug *image()\h
EndIf
MfG Tompazi
Verfasst: 02.06.2009 15:27
von cxAlex
So:
Code: Alles auswählen
Image$ = "sample.gif"
Structure My_SDL_PixelFormat
*palette
BitsPerPixel.b
BytesPerPixel.b
RGBAmask.b
RGBAloss.b
RGBAshift.i
colorkey.i
alpha.b
EndStructure
Structure My_SDL_Surface
flags.i
*format.My_SDL_PixelFormat
h.i
w.i
pitch.w
EndStructure
If OpenLibrary(0, "/usr/lib/libSDL_image-1.2.so.0.1.5") And ExamineLibraryFunctions(0)
Define *image.My_SDL_Surface
*image = CallFunction(0, "IMG_LoadTyped_RW", SDL_RWFromFile_(Image$, "rb"), 1, "GIF")
Debug *image\h
EndIf
Verfasst: 02.06.2009 15:38
von Tompazi
aha, also bei pointern ohne Klamern, Danke.
und in Bei einem Pointer mit struktur in einer Struktur?
Syntax error: structure field missing.
MfG Tompazi