Autor
|
Tema: [Ayuda] Abrir fichero de imagen en c (Leído 15,413 veces)
|
Mioshi
Desconectado
Mensajes: 23
|
Hola comunidad, hoy me dejaron un proyecto en TC20. El proyecto se basa en abrir ficheros y modo grafico. Lo que me preocupa es la parte de abrir el fichero de una imagen, tengo entendido que solo se pueden abrir imagenes con extension .bmp pero no se como hacerlo. Si alguien me puede ayudar con un codigo de ejemplo se lo agradeceria mucho.
Espero su respuesta y muchas gracias de antemano.
|
|
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
Si no te han dicho que librería usar puedes optar por una como SDL. Y si le añades SDL_image si que puedes abrir cualquier formato. Y ademas es relativamente fácil. Descargas las librerías de SDL, añades al IDE y a la carpeta donde va el .exe añades una dll o según el tipo de imagen que vayas cargar(jpg, tga, bmp...) mas de una dll(una dll por cada tipo de imagen extra a parte de la bmp). SDL trabaja con bmp, si quieres estos otros formatos necesitas una especie de extensión que te permite cargar los otros formatos. No se si hay alguna librería mas a mano, SDL es como matar moscas a cañonazo no se XD Es una librería multimedia, te sirve para hacer aplicaciones, videojuegos, sonidos, gestionar entrada salida, joystick, red todo. cargar una imagen es fácil, mas difícil es configurar la librería pero tampoco es un bicho de 7 cabezas. Si te interesa dímelo y te echo una mano.
|
|
|
En línea
|
|
|
|
Mioshi
Desconectado
Mensajes: 23
|
hola, gracias por responder pero no entiendo mucho lo que me estas tratando de explicar, estoy empezando a programar en c y pues no se si me puedas ayudar con un ejemplo especifico #include <alloc.h> #include <conio.h> #include <graphics.h> #include <stdio.h> #include <stdlib.h>
typedef struct { char Type[2]; /*Tipo de archivo. establecido en "BM".*/ unsigned long Size; /*Tamano en BYTES del archivo*/ unsigned long Reserved; /*Reservado. establecido en cero*/ unsigned long OffSet; /*Desplazamiento hacia datos*/ unsigned long headsize; /*Tamaño de la cabecera del bitmap. establecido en 40.*/ unsigned long Width; /*Anchura en pixeles.*/ unsigned long Height; /* Altura en pixeles.*/ unsigned int Planes; /*Numero de Planos. establecido en 1.*/ unsigned int BitsPerPixel; /*Numero de Bits por pixeles.*/ unsigned long Compression; /*Compresion. Usually establecido en 0.*/ unsigned long SizeImage; /*Tamano en BYTES del bitmap.*/ unsigned long XPixelsPreMeter; /*Pixeles Horizontales por metro.*/ unsigned long YPixelsPreMeter; /*Pixeles Verticales por metro.*/ unsigned long ColorsUsed; /*Numero de colores utilizados.*/ unsigned long ColorsImportant; /*Numero de colores "Importantes".*/ }BMP;
int muestraBMP(int x, int y, char* NomArchivo); void main() { int color; int gd , gm ; gd = VGA ; gm = VGAHI; clrscr(); initgraph(&gd,&gm,"C:\TC20\BIN"); muestraBMP(0,0,"pez.bmp"); /* Ingresa el nombre y direccion del archivo aqui */ getch(); closegraph(); }
int muestraBMP(int x, int y, char* NomArchivo) { int b,a; BMP Obj;
unsigned char* Datas; int in=0; unsigned char c=0; FILE * fp;
fp = fopen(NomArchivo,"rb"); if(!fp){ printf("Error : No se puede abrir el archivo ..."); getch(); exit(0); }
fread(&Obj, sizeof(Obj), 1, fp); if(Obj.BitsPerPixel!=4) /* Este NO es un bmp de 16 colores que podamos leer*/ { fclose(fp); printf("Error : Formato de archivo no soportado..."); getch(); exit(0); }; fseek(fp,Obj.OffSet,SEEK_SET); Datas=(unsigned char*) calloc(Obj.Width/2+1, sizeof(unsigned char)); for(b=Obj.Height;b>=0;b--) { fread(Datas, sizeof(unsigned char), Obj.Width/2, fp); c=0; in=0; for(a=0;a<=Obj.Width;a+=2) { c = (Datas[in] | 0xF0) & 0x0F; putpixel(a+1+x,b+y,c); c = (Datas[in] | 0x00) >>4; putpixel(a+x,b+y,c); in++; } } free (Datas); fclose(fp); return 1; } Este es un codigo que me paso una amiga, pero no me corre muy bien, no se que estoy haciendo mal
|
|
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
¿Que IDE usas? ¿Windos?
|
|
|
En línea
|
|
|
|
Mioshi
Desconectado
Mensajes: 23
|
sip window
|
|
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
Que compilador usas? Yo uso codeblocks y me esta tirando errores por que no incluye estas librerias de graficos
|
|
|
En línea
|
|
|
|
Mioshi
Desconectado
Mensajes: 23
|
TC20 o turbo c 2.0
|
|
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
Basicamente estas 2 no las encuentra
#include <alloc.h> #include <graphics.h>
|
|
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
No te voy a poder ayudar. No tengo turbo c
|
|
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
por lo que veo la imagen debe estar junto en la carpeta y llamar la imagen de pez.bmp XD Si te tira errores pon el aviso aqui a ver si averiguamos que le pasa
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
common dialog abrir/seleccionar mas de un fichero
Programación Visual Basic
|
luiski
|
3
|
2,304
|
13 Octubre 2006, 07:48 am
por luiski
|
|
|
Abrir (Ejecutar) un archivo (fichero) contenido en un Jar
Java
|
1mpuls0
|
5
|
9,188
|
8 Noviembre 2009, 17:01 pm
por 1mpuls0
|
|
|
Abrir último fichero modificado de un directorio
GNU/Linux
|
TheMaker
|
3
|
7,137
|
30 Julio 2010, 23:43 pm
por [u]nsigned
|
|
|
Duda abrir fichero c++
« 1 2 »
Programación C/C++
|
Stakewinner00
|
11
|
7,136
|
31 Enero 2013, 18:10 pm
por Stakewinner00
|
|
|
Problema abrir fichero en ruta distinta
Desarrollo Web
|
astrojohan
|
1
|
2,265
|
21 Diciembre 2017, 19:26 pm
por Tusso4
|
|