IMG_Load siempre devuelve NULL (SDL)

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

IMG_Load siempre devuelve NULL (SDL)

Notapor migueleitorone » Mar Ene 11, 2011 4:09 pm

buenas, porfin me he visto preparado para ponerme con el SDL y resulta que mi primer programa ya falla :S, aunque no veo por que. EL programa se ejecuta pero la imagen no se carga y devuelve null. He googleado pero no he encontrado nada concreto aver si alguno me puede hechar una manito. Mersi :D

Código: Seleccionar todo
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "SDL.h"
#include "SDL_image.h"

int main(int argc, char *argv[])
{
   SDL_Surface *screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE);
   SDL_Surface *img = ("rojo1.jpg");
   if(img == NULL)
   {
      printf("que pasa aqui: %s", SDL_GetError()); ///---------------->rojo.jpg couldnt open
      getch();
   }
   SDL_Rect cuadrado;
   cuadrado.x = 10;
   cuadrado.y = 10;
   SDL_BlitSurface(img, 0, screen, &cuadrado);
   SDL_Flip(screen);
   SDL_Delay(5000);

   return 0;
}
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: IMG_Load siempre devuelve NULL (SDL)

Notapor Juanxo » Mar Ene 11, 2011 6:30 pm

que IDE usas para programar? Normalmente casi todos especifican un directorio donde buscar (working dir). En VS por ejemplo creo que es el directorio donde está el proyecto.

Puedes probar a copiar la imagen en varias carpetas del proyecto(junto al archivo del proyecto, en la carpeta raiz, junto al ejecutable) hasta que te funcione, y luego prueba a ir borrando cada una y viendo cuando falla, así tendrás cual es el sitio donde tu IDE busca los ficheros

Otra cosa: dice que para imagenes JPEG necesitas la librería JPEG, que supongo que estará instalada, pero por si las moscas prueba algún otro tipo de imagen (.bmp o .png) para ver si es que no puedes cargar las jpeg
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: IMG_Load siempre devuelve NULL (SDL)

Notapor migueleitorone » Mar Ene 11, 2011 7:34 pm

uso el visual c++ express 2008, lo de copiar la imagen en todas las carpetas lo he probado pero no me funciona, igual es lo del jpg, voy a probar aver si con otro tipo puedo.

edit: me cambiado el tipo a .bmp y ahora me salta un error diferente
Código: Seleccionar todo
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "SDL.h"
#include "SDL_image.h"

int main(int argc, char *argv[])
{
   SDL_Surface *screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE);
   SDL_Surface *img = ("rojo1.bmp"); ///-------------------->no se puede realizar la conversión de 'const char [10]' a 'SDL_Surface *'
   if(img == NULL)
   {
      printf("que pasa aqui: %s", SDL_GetError());
      getch();
   }
   SDL_Rect cuadrado;
   cuadrado.x = 10;
   cuadrado.y = 10;
   SDL_BlitSurface(img, 0, screen, &cuadrado);
   SDL_Flip(screen);
   SDL_Delay(5000);

   return 0;


}
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: IMG_Load siempre devuelve NULL (SDL)

Notapor Juanxo » Mar Ene 11, 2011 9:27 pm

creo que has borrado de tu código el IMG_Load xD
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: IMG_Load siempre devuelve NULL (SDL)

Notapor carlostex » Mié Ene 12, 2011 3:06 am

En los dos códigos que escribes no tienes el IMG_load, lo acabo de probar y si funciona, pero le agregué esa función
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Re: IMG_Load siempre devuelve NULL (SDL)

Notapor migueleitorone » Mié Ene 12, 2011 2:36 pm

joder es verdad, que fallo ¬¬ xdd.
Ya esta solucionado, al final era lo de las carpetas, habia una donde no habia probado de poner la imagen. Aunque los jpgs sigue sin dejarmelos poner, me dice algo de una dll, pero en fin con .bmp ya me apaño.
Mersi a los dos por la ayuda :)
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: IMG_Load siempre devuelve NULL (SDL)

Notapor Juanxo » Mié Ene 12, 2011 4:05 pm

jpeg.dll es la que supongo que te dirá, pero no te recomiendo usar archivos jpeg, ya que con la compresión pierden detalles. Unos de los más usados en mi opinión es PNG, que comprime los archivos, pero sin perder ningún tipo de calidad, y maneja transparencias y demás
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: IMG_Load siempre devuelve NULL (SDL)

Notapor Geo » Vie Ene 21, 2011 5:16 am

Si solo utilizas BMP no es necesario que hagas uso de SDL_image (IMG_Load), ya que SDL lo soporta con la función SDL_LoadBMP.

El problema de la DLL se debe a que SDL_image enlaza con otras bibliotecas para soportar la carga de diversos formatos de imagen, para JPG debes tener, además de SDL_image.dll, jpeg.dll y probablemente también zlib.dll.
La imaginación es el límite.
Visita mi blog en inglés o en español.
Geo
 
Mensajes: 244
Registrado: Jue Ago 10, 2006 3:51 am
Ubicación: México


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado