All pastes #276679 Raw Edit

Someone

public text v1 · immutable
·published 2006-12-12 16:33 UTC
rendered paste body
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void convertPPMtoPGM(FILE *fpPPM, FILE *fpPGM);
void convertPPMtoPGMbinary(FILE *fpPPM, FILE *fpPGM);

#define fileName1 "D:\\YANA STUDY\\PROGRAMMING\\Homework Programming\\HW4\\snail.ppm" //ex alef
#define fileName2 "D:\\YANA STUDY\\PROGRAMMING\\Homework Programming\\HW4\\snail.pgm" //ex alef
#define fileName3 "D:\\YANA STUDY\\PROGRAMMING\\Homework Programming\\HW4\\party.ppm" //ex gimel for alf
#define fileName4 "D:\\YANA STUDY\\PROGRAMMING\\Homework Programming\\HW4\\party.pgm"//ex gimel for alef
#define SIZE_OF_FORMAT 2
#define SIZE_OF_COMMENTS 10

void checkIfExist(FILE *fp);


void main(){

	FILE *fpPPM; //pointer to file in PPM format in ASCII
	FILE *fpPGM; //pointer to file in PGM format in ASCII
	FILE *fpPPMbinary;//pointer to file in PPM format in binary
	FILE *fpPGMbinary;//pointer to file in PPM format in binary

	fpPPM=fopen(fileName1,"r");
	fpPGM=fopen(fileName2,"w");
	fpPPMbinary=fopen(fileName3,"rb");
	fpPGMbinary=fopen(fileName4,"wb");

	checkIfExist(fpPPM);
	checkIfExist(fpPPMbinary);

	convertPPMtoPGM(fpPPM,fpPGM);// color snail to grey snail (ASCII)
	convertPPMtoPGMbinary(fpPPMbinary, fpPGMbinary);//color party to grey party (binary)

	fclose(fpPPM);
	fclose(fpPGM);
	fclose(fpPPMbinary);
	fclose(fpPGMbinary);
}

void checkIfExist(FILE *fp){
	
	if(fp==NULL){
	printf("file doesn't exist\n");
	exit(1);
	}

}


void convertPPMtoPGMbinary(FILE *fpPPM, FILE *fpPGM){

char format[SIZE_OF_FORMAT];
int length, height, depth;
int red;
int blue;
int green;
int greyColor;
int i=1;
int binaryDataStart;
int totalSize;

	fscanf(fpPPM,"%s",format);
	fscanf(fpPPM,"%d",&length);
	fscanf(fpPPM,"%d",&height);
	fscanf(fpPPM,"%d",&depth);

	fprintf(fpPGM,"P5 ");
	fprintf(fpPGM,"%d ",length);
	fprintf(fpPGM,"%d ",height);
	fprintf(fpPGM,"%d ",depth);

	totalSize=height*3*length; //amount of numbers 
	binaryDataStart=ftell(fpPPM); //current location of the sign (after reading the header)


while(i<totalSize)
{
	
			fseek(fpPPM,binaryDataStart+sizeof(int)*i,SEEK_SET);	

			fread(&red,sizeof(int),1,fpPPM);
			fread(&green,sizeof(int),1,fpPPM);
			fread(&blue,sizeof(int),1,fpPPM);
			greyColor=red;
			fwrite(&greyColor,sizeof(greyColor),1,fpPGM);

			i=i+3;

}

}


void convertPPMtoPGM(FILE *fpPPM,FILE *fpPGM)
{
char format[SIZE_OF_FORMAT];
char comments[SIZE_OF_COMMENTS];
int height, length;
int counter;
int greyColor;
int size;
int red;
int green;
int blue;
int i;
int depth;

fscanf(fpPPM,"%s",format);
fscanf(fpPPM,"%s %s",comments, comments);
fscanf(fpPPM,"%d",&length);
fscanf(fpPPM,"%d",&height);
fscanf(fpPPM,"%d",&depth);

size=height*3*length*3;
fprintf(fpPGM,"P2\n");
fprintf(fpPGM,"%d\n",length);
fprintf(fpPGM,"%d\n",height);
fprintf(fpPGM,"%d\n",depth);

for(counter=0;counter<size; counter++)
{

	fscanf(fpPPM,"%d",&red);
	fscanf(fpPPM,"%d",&green);
	fscanf(fpPPM,"%d",&blue);
	greyColor=(red+green+blue)/3;
	fprintf(fpPGM,"%d ",greyColor);
	counter+=3;
}

}