/
image.h
120 lines (85 loc) · 2.86 KB
/
image.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include<stdio.h>
#include<stdlib.h>
int cImage [4000000];
int* ReadImage(char *path) {
char cArray[100];
int iWidth, iHeight, iRow, iCol;
int i;
unsigned int cTemp;
FILE *filePointer = NULL;
filePointer = fopen(path,"r");
if (filePointer == NULL)
{
printf("cannot open file");
}else
{
fgets (cArray, 99, filePointer);
printf("%s\n", cArray);
fgets (cArray, 99, filePointer);
printf("%s\n", cArray);
fscanf(filePointer,"%d %d\n", &iWidth, &iHeight);
printf("%d %d \n", iWidth, iHeight);
fgets (cArray, 99, filePointer);
printf("gray scale Value read - %s\n", cArray);
for (iRow = 0, i=0; iRow< iHeight; iRow++)
{
for (iCol = 0; iCol< iWidth; iCol++)
{
fscanf(filePointer, "%d ", &cTemp);
if (cTemp != EOF)
{
cImage[i] = cTemp;
i++;
}
}
}
cImage[3999997]=iWidth;
cImage[3999998]=iHeight;
cImage[3999999]=atoi(cArray);
fclose(filePointer);
}
//printf("returning to main %d\n",i);
return cImage;
}
void WriteImage(char *path, int flag){
char cArray[100];
int i, j, size, grayscale, width, height;
unsigned int cTemp;
FILE *filePointer = NULL;
filePointer = fopen(path,"w");
width=cImage[3999997];
height=cImage[3999998];
grayscale=cImage[3999999];
size=width*height;
if(flag==1){
fprintf(filePointer,"P2\n#created by seeraj\n%d %d\n%d\n", width, height, grayscale);
for (i=0; i<size; i++)
{
fprintf(filePointer, "%d ",cImage[i]);
}
}
if(flag==2){
fprintf(filePointer,"P2\n#created by seeraj\n%d %d\n%d\n", width/2, height/2, grayscale);
for (i=0; i<size; i+=2)
{
if((i%width)%2==0 && (i/width)%2==0)
fprintf(filePointer, "%d ",cImage[i]);
}
}
if(flag==3){
fprintf(filePointer,"P2\n#created by seeraj\n%d %d\n%d\n", width*2, height*2, grayscale);
for (i=0; i<size; i++)
{
fprintf(filePointer, "%d ",cImage[i]);
fprintf(filePointer, "%d ",cImage[i]);
if(i/width>=1 && i%width==0){
for(j=0;j<width;j++){
fprintf(filePointer, "%d ",cImage[i-width+j]);
fprintf(filePointer, "%d ",cImage[i-width+j]);
}
}
}
}
fclose(filePointer);
//printf("returning to main second time\n");
}