Documentation de la bibliothèque MLV-2.0.2

SDL_Surface* MLV_get_image_data ( MLV_Image image)

Renvoie les données internes de l'image.

Cette fonction renvoie un pointeur vers la structure de donnée de la libriaire SDL codant une image.

N'utilisez cette fonction que si vous souhaitez effectuer une opération sur une image qui n'existe pas dans la bibliothèque MLV. En effet, modifier les données internes d'une image de type MLV_Image peut corrompre le fonctionnement de la bibliothèque MLV.

Vous pouvez alors utiliser les routines de la lirairie SDL pour modifier l'image. (http://libsdl.org)

Voici un exemple de code montrant comment il est possible de récupérer les composantes rouge, vert, bleu et alpha du pixel (3,4) de l'image.

1 int x=3, y=4;
2 
3 SDL_Surface* surface = MLV_get_image_data( image );
4 Uint32 red, blue, green, alpha;
5 
6 // Extracting color components from a 32-bit color value
7 SDL_PixelFormat *fmt;
8 Uint32 pixel;
9 
10 SDL_LockSurface(surface);
11 fmt = surface->format;
12 pixel = *(((Uint32*) surface->pixels)+ y*surface->pitch/4 + x );
13 
14 // Get Red component
15 red = pixel & fmt->Rmask; // Isolate red component
16 red = red >> fmt->Rshift; // Shift it down to 8-bit
17 red = red << fmt->Rloss; // Expand to a full 8-bit number
18 
19 // Get Green component
20 green = pixel & fmt->Gmask; // Isolate green component
21 green = green >> fmt->Gshift; // Shift it down to 8-bit
22 green = green << fmt->Gloss; // Expand to a full 8-bit number
23 
24 // Get Blue component
25 blue = pixel & fmt->Bmask; // Isolate blue component
26 blue = blue >> fmt->Bshift; // Shift it down to 8-bit
27 blue = blue << fmt->Bloss; // Expand to a full 8-bit number
28 
29 // Get Alpha component
30 alpha = pixel & fmt->Amask; // Isolate alpha component
31 alpha = alpha >> fmt->Ashift; // Shift it down to 8-bit
32 alpha = alpha << fmt->Aloss; // Expand to a full 8-bit number
33 
34 MLV_unlock_image( image );
Paramètres
imageL'image dont vous souhaitez récuperer les données internes.
Renvoie
un pointeur vers une image de la bibliothèque SDL.