¿Por que no funciona este programa?

M47RiX
06 de Junio del 2004
Tengo la imagen en el mismo directorio que el programa (BGI) y no la puedo ver, sin embargo sí puede abrir el archivo.
#include <graphics.h>
#include <conio.h>
#include <stdio.h>

void recuperar();

void main(){

int gd,gm,mx,my;

gd=DETECT;
initgraph(&gd,&gm,"");
recuperar();
getch();
closegraph();
}

void recuperar()
{
FILE *arch;
char arr[8500];

if((arch=fopen("poch2.bmp","r"))==NULL)
{
outtextxy(430,getmaxy()-75,"Archivo no existente");
getch();
}
else
{
fread(&arr,sizeof(arr),1,arch);
putimage(20,20,arr,COPY_PUT);
outtextxy(430,getmaxy()-75,"Si abri archivo");
}
fclose(arch);
}

zeros
06 de Junio del 2004
Bueno, como primera medida... y como ultima:
getimage, putimage trabajan en formato RAW, crudo, sin procesar, sin formato o como quieras llamarlo... lo que pone putimage en la pantalla es una copia fiel de mapa de bits, una imagen de la memoria... solamente una ristra de bytes...
El formato BMP, a pesar de lo que dice su nombre, tiene una cabecera, una paleta y finalmente los datos.
La razon por la que la imagen BMP no se ve es porque primero tenes que buscar los datos, desenmarañarlos de la estructura del archivo (no digo decodificarlos porque no estan codificados) y poner pixel por pixel en la pantalla (a menos que quieras acceder a la memoria de video directamente y calcules el offset y el plano en que cae el pixel de acuerdo a pa pocicion X e Y :-(
El formato BMP esta compuesto de una cavecera, una paleta y finalmente los indices de los colores que hacen referencia a esa paleta (que tenes que cargarla antes si queres que se vea como deve ser... :-( En definitiva tenes que trabajar los datos del archivo antes de ponerlos en pantalla...
En internet tenes ingente informacion del formato BMP, JPG, TIFF XPM, PNG, etc y muchos ejemplos de codigo en C, pascal, basic, Modula???, COBOL???!!!!, etc.

Bueno, espero que te sirva el comentario.
Saludos.