Référence SDL_image

La SDL est délibéremment construite de manière à fournir le strict minimum pour développer un programme graphique. Ainsi, la SDL ne fournit aucune méthode pour charger différents formats d'images. C'est là qu'une bibliothèque telle que SDL_image rentre en scène. En utilisant SDL_image, vous pourrez charger des images dans tous les formats communs tels que les formats BMP, PNM (PPM/PGM/PBM), XPM, LBM, PCX, GIF, JPEG, PNG, TGA, et TIFF. Celles-ci sont chargées dans votre SDL_Surface et affichées à l'écran comme n'importe quelle autre SDL_Surface. Elle supporte la transparence via canal alpha pour les formats qui la proposent (par exemple le PNG).

Cette documentation est un extrait de la documentation de SDL_image anglaise (écrite par Jon Atkins), qui contiendra sûrement des informations plus à jour (aucune traduction en français disponible à ce jour). Pour une copie de la bibliothèque SDL_image, voir la page officielle du projet.

API

C'est très simple, vous allez voir. Tout ce qu'il faut faire, c'est créer une SDL_Surface et utiliser l'une des fonctions de la SDL_image pour accéder à vos images.

#include "SDL_image.h"

SDL_Surface *IMG_Load(const char *file);    // ou,
SDL_Surface *IMG_Load_RW(SDL_RWops *src, int freesrc);  // ou,
SDL_Surface *IMG_LoadTyped_RW(SDL_RWops *src, int freesrc, char *type);

Où "type" est une chaîne de caractères indiquant le format (par exemple "PNG" ou "pcx"). Notez que IMG_Load_RW ne peut pas charger les images au format TGA.

Pour créer une surface à partir d'une image XPM contenue dans un source C, utilisez :

SDL_Surface *IMG_ReadXPMFromArray(char **xpm);

JPEG support requires the JPEG library:

PNG support requires the PNG library and the Zlib library:

TIFF support requires the TIFF library:

Sous Windows, installer ces bibliothèques revient simplement à placer leurs DLLs dans le dossier de l'exécutable. Les utilisateurs de Linux devront placer ces fichiers dans leur répertoire lib... chaque site devrait contenir les instructions détaillées sur l'endroit où les mettre exactement.

Exemple

Voici un exemple de code pour voir comment utiliser SDL_image.h :

int DrawImage( SDL_Surface *surface, char *image_path, int x_pos, int y_pos )
{
   SDL_Surface *image = IMG_Load ( image_path );
   if ( !image )
   {
      printf ( "IMG_Load: %s\n", IMG_GetError () );
      return 1;
   }

   // Draws the image on the screen:
   SDL_Rect rcDest = { x_pos, y_pos, 0, 0 };
   SDL_BlitSurface ( image, NULL, surface, &rcDest );
   SDL_FreeSurface ( image );
   return 0;
}

SDLDoc-fr/SDL_image (last edited 2008-04-17 08:18:48 by localhost)