elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿carga de imagenes BMP en C??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿carga de imagenes BMP en C??  (Leído 3,357 veces)
Aarondct16

Desconectado Desconectado

Mensajes: 5


Ver Perfil
¿carga de imagenes BMP en C??
« en: 16 Octubre 2016, 23:23 pm »

hola , me gustaría que me pudieran ayudar a cargar una imagen en  lenguaje C, yo uso el compilador de TC20 por que es el que utiliza la universidad.

yo tengo el siguiente código

Código
  1. #include <stdio.h>
  2. #include <dos.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #include <graphics.h>
  6.  
  7.  
  8. int loadbitmap(char *filename,int,int);
  9.  
  10. main ()
  11. {
  12.  
  13. loadbitmap("p.bmp",100,100);
  14.  
  15.  
  16. }
  17.  
  18.  
  19. int loadbitmap(char *filename,int wid,int hei)
  20. {
  21. FILE *ptr=NULL;
  22. int width,height, ch,ch1,ch2;
  23. unsigned long temp=0,i=0,j=0;
  24. unsigned long ww;
  25. char *linea;
  26.  int adapta, modo;
  27. detectgraph(&adapta,&modo);
  28. initgraph(&adapta,&modo,"");
  29.  
  30. ptr=fopen(filename,"rb");
  31. linea = (char *) malloc (sizeof(ptr));
  32.  
  33.  
  34. if(!ptr) return 0;
  35. width=0;height=0;
  36. fseek(ptr,18,SEEK_SET);
  37. fread(linea, width, 1, ptr);
  38. for(i=0x1;i<=0x10000;i*=0x100)
  39. {
  40. temp=fgetc(ptr);
  41. width+=(temp*i);
  42. }
  43. fseek(ptr,22,SEEK_SET);
  44. for(i=0x1;i<=0x10000;i*=0x100)
  45. {
  46. temp=fgetc(ptr);
  47. height+=(temp*i);
  48. }
  49.  
  50.  
  51. ww=width;
  52. if(ww%2)
  53. ww++;ww/=2;
  54. if(ww%4)
  55. ww=(ww/4)*4+4;
  56.  
  57. fseek(ptr,119,SEEK_SET);
  58. moveto(200,300);
  59.  
  60.  
  61. for(i=0;i<height;i++)
  62.  
  63. for(j=0;j<ww;j++)
  64.  
  65.  
  66. {
  67.  
  68. ch=fgetc(ptr);
  69. ch1=ch;ch2=ch;
  70. ch1=ch1&(0xf0);ch1=ch1>>4;
  71. ch2=ch2&(0x0f);
  72.  
  73.  
  74. if(j*2<width)
  75.  
  76. putpixel((j)*2+wid,(hei+height-1-i),getcol(ch1));
  77. if(j*2+1<width)
  78. putpixel((j)*2+1+wid,(hei+height-1-i),getcol(ch2));
  79. }
  80. fclose(ptr);
  81. return 1;
  82. }
  83.  
  84.  
  85.  
  86. int getcol(int col)
  87. {
  88. switch(col)
  89. {
  90. case 0: return 0;
  91. case 1: return 4;
  92. case 2: return 2;
  93. case 3: return 6;
  94. case 4: return 1;
  95. case 5: return 5;
  96. case 6: return 3;
  97. case 7: return 7;
  98. case 8: return 8;
  99. case 9: return 12;
  100. case 10:return 10;
  101. case 11:return 14;
  102. case 12:return 9;
  103. case 13:return 13;
  104. case 14:return 11;
  105. case 15:return 15;
  106. }
  107. return col;
  108. }



el cual aparentemente si lee la imagen pero a la hora de mostrarla en pantalla no lo hace como me gustaría obteniendo el siguiente resultado



nada en comparacion con la que quiero insertar



les agradecería mucho si me pudieran ayudar


« Última modificación: 17 Octubre 2016, 05:32 am por simorg » En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: ¿carga de imagenes BMP en C??
« Respuesta #1 en: 17 Octubre 2016, 02:53 am »

Para el manejo de imagenes BMP te recomendaria Allegro, que creo que tambien maneja interfaz con cursor mouse y te permite usar estilos para interfaces. (como barras semicirculares y que permitan estilos en letras, cosas que veo que usas en tu login).


echale un vistazo a estos tutos, son faciles de implementar:

http://devcpp-allegro.blogspot.com.co/2012/01/mi-primer-ejemplo.html
http://devcpp-allegro.blogspot.com.co/2012/02/como-creo-un-menu-en-c.html

Hay otras librerias, como SDL, SFML OpenGL, MiniWin (este lo recomiendo especialmente por su increible facilidad de manejo y el excelente tutor que es Paueky)

Solo mira un poco:

https://www.youtube.com/watch?v=2yagNLyWa-M
https://miniwin.readthedocs.io/en/latest/


En línea


Aarondct16

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ¿carga de imagenes BMP en C??
« Respuesta #2 en: 17 Octubre 2016, 04:30 am »

es que creo que ningunas de esas librerias son compatibles con turbo C y puesto a que la universidad me exige ese compilador no puedo cambiar a otro
En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: ¿carga de imagenes BMP en C??
« Respuesta #3 en: 17 Octubre 2016, 05:28 am »

Pues deberias cambiar el compilador y ese horrendo turboc, una de las cosas de la universidad que los docentes esperan de sus estudiantes es que se salgan de la curva, muestren categoria por medio de la iniciativa y el ingenio.

Maldita sea, yo casi nunca seguia esas indicaciones de programas horribles que usaban ahi, tanto que practicamente modernice solo 3 laboratorios enteros porque sus encargados eran unos fucking vagos.

Por la universidad conoci esos horrendos adefecios de TurboC, TurboB, Borland, Dev-C++ y no los use mucho tiempo, siempre recurria a mejores alternativas, y los profesores la mayoria de veces no ponian problema si se les explicaba razonablemente mis elecciones.

Lo unico que puedo recomendar al respecto al uso de ese con graficas, es seguir un tutorial preciso de ese tema o consultar la documentación oficial al respecto:

https://www.youtube.com/watch?v=HntBYTdagas
http://electrosofts.com/cgraphics/
http://www.softwareandfinance.com/Turbo_C/Graphics/Index.html
En línea


engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: ¿carga de imagenes BMP en C??
« Respuesta #4 en: 17 Octubre 2016, 05:47 am »

la cosa no está en montar guerra... si está bien proponer, pero para acá no es del todo una solucíon

leete la documentación de la estructura del bmp, porque lo que se ve es que parece que estás cuadranmdo mal  la cantidad de lineas y parte de la linea se está dibujando en la siguiente... modifica el ancho
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con carga de imágenes ...
PHP
NetStorm 2 2,256 Último mensaje 25 Agosto 2009, 02:37 am
por NetStorm
Ayuda Carga de Imagenes
Desarrollo Web
devNicolas 4 2,696 Último mensaje 21 Agosto 2014, 19:31 pm
por engel lex
carga de imagenes y imagenes en moviemientos
Java
bash 2 3,067 Último mensaje 13 Febrero 2015, 15:23 pm
por 3n31ch
Carpeta DCIM CAMERA problema, no carga ni lee las imagenes.... « 1 2 »
Dispositivos Móviles (PDA's, Smartphones, Tablets)
Maycole 10 9,422 Último mensaje 1 Diciembre 2023, 17:17 pm
por Maycole
MOVIDO: Carpeta DCIM CAMERA problema, no carga ni lee las imagenes....
Software
MCKSys Argentina 0 2,450 Último mensaje 28 Noviembre 2023, 21:25 pm
por MCKSys Argentina
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines