Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
h>
#include <stdlib.h>
#include <string.h>
#define N 100
#define MAXCAD 200
/* Funci�n cargar: abrir� el fichero (que ser� de formato byn) y lo usar� para
inicializar
con el mismo una matriz entera N x N (excepto si la imagen que contiene el fichero
tiene
m�s de N filas o columnas). La funci�n recibir� como par�metros:
- Una cadena con el nombre del fichero (nomfich)
- Una matriz entera 100 x 100 (imagen)
- Dos par�metros enteros por referencia (filas y columnas). La funci�n debe
inicializarlos
con el n�mero de filas y columnas de la imagen que carga.
f=fopen(nomfich, "r");
if (f==NULL) return 1;
fscanf(f,"%d%d",&nf,&nc);
if (nf>100 || nc>100) {
fclose(f);
return 2;
}
fclose(f);
*filas = nf;
*columnas = nc;
return 0;
}
/* funci�n que permitir� invertir una imagen. La funci�n recibir� una matriz con
una
imagen en formato byn y el n�mero de filas y columnas de dicha matriz. Para
invertir
la imagen lo que har� la funci�n ser� cambiar los p�xeles que son 1 por 0 y los que
if (suma>=3) color = 1;
else if (suma<=1) color = 0;
else color=origen[i][j];
destino[i][j]=color;
destino[i+1][j]=color;
destino[i][j+1]=color;
destino[i+1][j+1]=color;
}
return 1;
}
/* funci�n que muestra por pantalla una imagen */
void mostrar(int imagen[N][N], int filas, int columnas)
{
int i, j;
printf("\n");
int main()
{
char nf1[MAXCAD]="ejemplo.byn";
int img[N][N], img2[N][N], f, c, res;
res = cargar(nf1, img, &f, &c);
if (res>0)
{
printf("Error cargando %s", nf1);
return -1;
}
invertir(img, f, c);
printf("\n\nImagen invertida:\n");
mostrar(img, f, c);
reducir(img, f, c, img2);
printf("\n\nImagen reducida:\n");
mostrar(img2, f, c);
return 0;
}