Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
CREER,LIRE,ECRIRE ET SEUILLER UNE IMAGE RAW(ALLOCATION DYNAMIQUE ...)
Information sur la source
Description
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
- #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;
- }
#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!
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Sources de la même categorie
Commentaires
|
|