1

Bonjour,

je cherche un programme qui donne un tableau dans un .h à partir d'un bmp en 24bits... Ca doit sûrement exister mais je n'en trouve que pour du 8 bits.

C'est pour utiliser avec SDL_CreateRGBSurfaceFrom, j'espère que c'est bien ça qu'il faut ? Parce que le premier argument doit être de la forme "void *pixels" et je vois pas trop ce que c'est...

Merci d'avance

2

pourquoi n'utilises tu pas sdl_loadbmp? Sinon pour ton fichier .h c'est tres simple c'est une lecture banale du fichie ravec une conversin des bytes du fichiers en ascii.

3

Ben je voudrais intégrer les images à l'exécutable.
Sinon je vois comment faire le convertisseur mais vu que je suis pas sûr que ça va marcher j'ai un peu la flemme... Ca doit bien exister non ?

4

Bah tu prends un outil d'image genre Paint Shop Pro (car je sais qu'il le fait) et tu exportes en raw (en gros les pixels de l'image sans le header, donc tu dois savoir utiliser ces données ensuite...) avec le format qu'il faut (genre RGB ou RGBA je sais pas ce que ta fonction prend). Ensuite suffit juste d'incorporer ces données binaires dans ton programme, et écrire un convertisseur octets -> tableau en C c pas la mer à boire happy
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

5

On peut intégrer le raw à l'exe ou tu veux dire y accéder par fopen, etc... ?

6

non pas de fopen, tu utilise un utilitaire transformant le binaire raw en .h
trouvable par exemple la http://procvor.free.fr/download/bin/mbin2h.rar

apres ton fichier sera direct accessible par un tableau..

style
u8*myIncludedFile[] = { ... }; // le tableau genere par bin2h
int*myRawBmp = (int*)myIncludedFile; // le pointeur vers ton image en 24b..

sinon,si tu veut pas utiliser photoshop ou koi, charge ton image depuis sdl puis sauve le contenu de ta surface ds un fichier et tu aurra ton raw..
et la le mec il le pécho par le bras et il lui dit '

7

Ok, ça marche bien comme ça, merci ! smile

En fait je pensais qu'il fallait que le tableau soit de la forme : {0x000000, 0x000000... mais comme c'est à la suite en mémoire ça doit revenir au même...

Par contre j'ai encore un problème avec SDL_CreateRGBSurfaceFrom...

Je fais :
s_fond5=SDL_CreateRGBSurfaceFrom(&fond5, width, height, 24, width*3, 0, 0, 0, 0);

et ça m'affiche 9 fois l'image, 9 fois plus petite :-\
J'ai presque rien trouvé comme doc sur cette fonction, c'est pas comme ça qu'on l'utilise ?

8

Pourquoi ne pas utiliser des xpm sinon ?

9

Ah pardon j'avais pas vu le 24 bits.
Moué le xpm marcherait mais serait assez moche dans le source cheeky

10

y'a une methode simple et efficace avec SDL pour charger son image a partir d'un tableau et le tout dans un executable ^^

c'est SDL_RWFromMem et SDL_LoadBMP_RW , sont utilisation est d'ailleur tres simple smile

exemple :

en prenant le BMP converti en tableau unsigned char spr_sprite[5750] = { ....};

#include "sprite.h" //le tableau du sprite

SDL_Surface *sprite = NULL;
SDL_RWops * mon_sprite;

void load_sprite()
{
mon_sprite = SDL_RWFromMem(spr_sprite,sizeof(spr_sprite)/sizeof(unsigned char));
sprite = SDL_LoadBMP_RW(mon_sprite,0); }


ensuite, tu suffit d'utiliser tes fonctions habituelle.
rien de plus simple , ton image sera dans l'exe smile
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)