Bon, c'etait une demande du forum, alors je fais en faire profiter tout le monde ...C'est hyper basique et c'est en mode console, donc rien de bien extraordinaire ...
!!! qd vous saisissez les nom d'images, il faut rajouter l'extension ".raw" (photoshop le genere et le lit tres bien ...)
Source / Exemple :
#include <stdio.h>
#include <stdlib.h>
unsigned char ** allocation(int NBL, int NBC)
{
int i, j;
unsigned char **image;
image = (unsigned char**)calloc(NBL,sizeof(unsigned char **));
if (image == NULL)
return(NULL);
for (i=0;i<NBL;i++)
{
image[i] = (unsigned char*)calloc(NBC,sizeof(unsigned char));
if (image[i] == NULL)
{
for (j=0;j<i;j++)
free(image[j]);
free(image);
return(NULL);
}
}
return(image);
}
void desallocation(unsigned char **image, int NBL)
{
int i;
if (image == NULL)
exit(0);
for (i=0;i<NBL;i++)
free(image[i]);
free(image);
}
void LireImageRAW(unsigned char** image, int NBL, int NBC)
{
char nom_image[256];
FILE * fic_image;
int i, j;
getchar();
printf("Nom de l'image a ouvrir : \n");
gets(nom_image);
fic_image = fopen(nom_image,"rb");
if (fic_image == NULL)
{
printf("Erreur a l'ouverture de l'image ...\n");
exit(0);
}
else
printf("Image ouverte avec succes ...\n");
for(i=0;i<NBL;i++)
for(j=0;j<NBC;j++)
fread(&image[i][j],1,1,fic_image);
fclose(fic_image);
}
void EcrireImageRAW(unsigned char** image, int NBL, int NBC)
{
char nom_image[256];
FILE * fic_image;
int i, j;
getchar();
printf("Nom de l'image a ecrire : \n");
gets(nom_image);
fic_image = fopen(nom_image,"wb");
if (fic_image == NULL)
{
printf("Erreur a la creation de l'image ...\n");
exit(0);
}
else
printf("Image cree avec succes ...\n");
for(i=0;i<NBL;i++)
for(j=0;j<NBC;j++)
fwrite(&image[i][j],1,1,fic_image);
fclose(fic_image);
}
void SeuilImageRAW(unsigned char** image, int NBL, int NBC, int seuil)
{
int i, j;
for(i=0;i<NBL;i++)
for(j=0;j<NBC;j++)
{
if (image[i][j] < seuil)
image[i][j] = 0;
else
image[i][j] = 255;
}
}
int main()
{
unsigned char ** image;
int NBL, NBC, seuil;
printf("Nombre de lignes de l'image :\n");
scanf("%d",&NBL);
printf("Nombre de colonnes de l'image :\n");
scanf("%d",&NBC);
image = allocation(NBL,NBC);
if (image != NULL)
{
LireImageRAW(image,NBL,NBC);
printf("Seuil a appliquer : \n");
scanf("%d",&seuil);
SeuilImageRAW(image,NBL,NBC,seuil);
EcrireImageRAW(image,NBL,NBC);
desallocation(image,NBL);
}
else
{
printf("Erreur lors de l'allocation memoire! Sortie du programme.\n");
return 1;
}
return 0;
}
Conclusion :
j'ai pas mis de commentaires, mais c'est pas hyper complique ... sinon, posez vos questions!
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.