c++ - JPG images correctly loads but not showing on SDL -


i have load , show 20 random images 6750 jpg images. images in jpg format , shows not , not always. part loads images using img_load (sorry, english bad).

i have image lib correctly installed. code fine because png images works, problem jpg images , have use 6570 of them.

int i=0,ra;                   srand(time(null));         char name[18];        while(i<10){     ra=rand()%675+1;     sprintf(name, "icons/icono (%d).jpg",ra);     strcpy(imgs[i], name);     imas[i] = img_load(imgs[i]);                                    printf("icono %s charged\n",imgs[i]);     i++;} 

with printf can check if imgs correctly loaded, know no errors code, when run program, 2 or 4 images shows , no more.

this entire code (ignore comments if dont speak spanish):

#include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #include <sdl/sdl.h> #include <sdl/sdl_image.h> #include <sdl/sdl_mixer.h>  void limpiar (sdl_surface *screen);         //declaración de funciones void imprimir(sdl_surface *screen, sdl_surface *ima, int x, int y); void mover_objeto(int *x, int *y, int ancho, int alto);   int main(int argc, char *argv[]){     sdl_surface *screen;                        //la superficie contenedora     sdl_surface *ima, *imag, *imas[11];         //la superficie de imagen     mix_music *cancion;                         //el sonido que tenemos     sdl_event event;                            //evento usar en el programa     int salir = 0;                              //salir esta en falso     int x = 20;                                 //coordenada x de la imagen     int y = 100;                                //coordenada y de la imagen      if (sdl_init(sdl_init_video | sdl_init_audio) == -1){        printf("error: %s\n", sdl_geterror()); return 1;}            //inicialización     screen = sdl_setvideomode(360, 450, 16, sdl_hwsurface);         //superficie contenedora     if (screen == null){        printf("error: %s\n", sdl_geterror()); return 1;}            //en caso de error de superficie     sdl_wm_setcaption("memorice warcraft", null);                   //titulo de la ventana  //*************  imagen  ****************     char imgs[11][18];                  imag = img_load("icons/00.png");      int i=0,ra;                     //i para carga de imagenes     srand(time(null));           //para no repetir el random     char name[18];               //en name almacenaremos cada nombre de imagen     while(i<10){         ra=rand()%675+1;         sprintf(name, "icons/icono (%d).jpg",ra);         strcpy(imgs[i], name);         imas[i] = img_load(imgs[i]);                                //cargo las imagenes al arreglo         printf("icono %s cargado\n",imgs[i]);                       //print guardado en stdout.txt         i++;}   //*************  audio  ****************     if (mix_openaudio(44100, mix_default_format, 2, 4096) == -1){        printf("error en mix_openaudio: %s\n", mix_geterror());     //abrimos un audio de fondo        return 1;}     cancion = mix_loadmus("bnet.wav");                             //cargamos la cancion     if (!cancion)         printf("error en mix_loadmus: %s\n", mix_geterror());      //o tiramos error      if (cancion){         if (mix_playmusic(cancion, -1) == -1)                     //corre la pista de musica o error             printf("error en mix_playmusic: %s\n", mix_geterror());}   //**************  while de ejecución  *************     while (! salir){                             //mientras no hayamos salido del juego         sdl_pollevent(&event);                   //esperamos pulsación de tecla         if (event.type == sdl_quit) salir = 1;   //si cerramos la ventama, salimos         limpiar(screen);                         //llamamos funcion que actualiza         int j=0;         int px=20,py=100;         while(j<20){             imprimir(screen, imag, px, py);      //pintamos escudos             px+=64;             if(j==4 || j==9 || j== 14){py+=64;px=20;}             j++;}          uint8 *key = sdl_getkeystate(null);         if (key[sdlk_4])                             //al presionar tecla            imprimir(screen, imas[0], 20, 100);       //mostramos imagen respectiva         if (key[sdlk_5])                imprimir(screen, imas[1], 84, 100);         if (key[sdlk_6])                imprimir(screen, imas[2], 148, 100);         if (key[sdlk_7])                imprimir(screen, imas[6], 212, 100);         if (key[sdlk_8])                imprimir(screen, imas[7], 276, 100);         if (key[sdlk_e])                imprimir(screen, imas[8], 20, 164);         if (key[sdlk_r])                imprimir(screen, imas[3], 84, 164);         if (key[sdlk_t])                imprimir(screen, imas[0], 148, 164);         if (key[sdlk_y])                imprimir(screen, imas[2], 212, 164);         if (key[sdlk_u])                imprimir(screen, imas[9], 276, 164);         if (key[sdlk_s])                imprimir(screen, imas[1], 20, 228);         if (key[sdlk_d])                imprimir(screen, imas[4], 84, 228);         if (key[sdlk_f])                imprimir(screen, imas[6], 148, 228);         if (key[sdlk_g])                imprimir(screen, imas[7], 212, 228);         if (key[sdlk_h])                imprimir(screen, imas[8], 276, 228);         if (key[sdlk_z])                imprimir(screen, imas[9], 20, 292);         if (key[sdlk_x])                imprimir(screen, imas[5], 84, 292);         if (key[sdlk_c])                imprimir(screen, imas[3], 148, 292);         if (key[sdlk_v])                imprimir(screen, imas[4], 212, 292);         if (key[sdlk_b])                imprimir(screen, imas[5], 276, 292);          sdl_flip(screen);                        //mostramos la superficie contenedora         sdl_delay(10);                           //delay de actualización         }      if (cancion){        mix_haltmusic();                         //forma correcta de terminar el audio        mix_freemusic(cancion);}     mix_closeaudio();      sdl_quit();     return 0; }   void limpiar (sdl_surface *screen){                             //funcion que actualiza     uint32 = sdl_maprgb(screen->format, 50, 100, 155);        //fondo azulado     sdl_fillrect(screen, null, a);                              //ponemos el fondo }  //pinta la imagen en la surface, recibiendo la imagen,  x  e  y void imprimir(sdl_surface *screen, sdl_surface *ima, int x, int y){     sdl_rect rect = {x, y, 0, 0};                           //crea un nuevo rectángulo     sdl_blitsurface(ima, null, screen, &rect);              //para pintar la imagen }  void mostrar_imagen(sdl_surface *screen, sdl_surface *imas){     uint8 *boton = sdl_getkeystate(null);     if (boton[sdlk_e])         printf("ok adasdsad %d",1);     } 

i know solution use png images, dont know how convert 6750 of them in less 1 week.

if of know solution or how convert 6750 jpg images png in minits or less, i'll greatful.


Comments

Popular posts from this blog

java - Date formats difference between yyyy-MM-dd'T'HH:mm:ss and yyyy-MM-dd'T'HH:mm:ssXXX -

c# - Get rid of xmlns attribute when adding node to existing xml -