-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpgmnega.c
More file actions
58 lines (43 loc) · 1.41 KB
/
pgmnega.c
File metadata and controls
58 lines (43 loc) · 1.41 KB
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
#include <stdio.h>
#include <stdlib.h>
#include <libgen.h>
#include <string.h>
#include "file.h"
#include "util.h"
#include "image.h"
int main(int argc, char *argv[]) {
_PGMImage *inputImage, *outputImage;
FILE *input;
FILE *output;
char *inputFile;
char *outputFile;
/* linha de comando */
if (argc > 1) {
int i = 0;
while(++i < argc) {
if (strcmp(argv[i], "-i") == 0)
inputFile = argv[i+1];
else if (strcmp(argv[i], "-o") == 0)
outputFile = argv[i+1];
}
}
allocateImages(&inputImage, &outputImage);
openFile(&input, inputFile, READ);
getFileType(input, &inputImage->type);
getFileDimensions(input, inputImage->type, &inputImage->row, &inputImage->col);
getFileMaxGray(input, &inputImage->max_gray);
inputImage->grid = allocateGrid(inputImage->grid, inputImage->row, inputImage->col);
getImageGrid(input, inputImage->grid, inputImage->row, inputImage->col, inputImage->type);
openFile(&output, outputFile, WRITE);
/* ~~~~ Filtro Negativo ~~~~ */
filtroNegativo(inputImage, outputImage);
/* ~~~~~~~~~~~~~~~~~~~~~~~~~ */
createOutputFile(output, outputImage);
freeGrid(inputImage->grid, inputImage->row);
freeGrid(outputImage->grid, outputImage->row);
free(inputImage);
free(outputImage);
fclose(input);
fclose(output);
return 0;
}