1 #include
2 #include
3 #include
4 #include
5 #include
6
7 int main(int argc,char **argv)
8 {
9 ExceptionInfo
10 exception;
11
12 Image
13 *image,
14 *rgimage,
15 *gbimage,
16 *brimage;
17
18 ImageInfo
19 *image_info;
20 char
21 * infilename,
22 * rgfilename,
23 * gbfilename,
24 * brfilename;
25 PixelPacket * ipix, *rgpix,*gbpix, *brpix;
26
27 unsigned char M[3][256*256];
28 unsigned char r,g,b;
29
30 infilename = argv[1];
31 rgfilename = argv[2];
32 gbfilename = argv[3];
33 brfilename = argv[4];
34
35 int i,j;
36
37
38
39
40 InitializeMagick(*argv);
41 GetExceptionInfo(&exception);
42 image_info=CloneImageInfo((ImageInfo *) NULL);
43
44 (void) strcpy(image_info->filename, infilename);
45 image=ReadImage(image_info,&exception);
46 if (exception.severity != UndefinedException)
47 CatchException(&exception);
48 if (image == (Image *) NULL)
49 exit(1);
50
51
52
53
54 fprintf(stderr, "\nImage Info:\n"
55 "name: %s\n"
56 "colorspace : %d\n"
57 "type : %d\n"
58 "columns: %ld rows : %ld\n"
59 "depth: %ld colors: %ld\n"
60 ,
61 image_info->filename,
62 image->colorspace,
63 GetImageType(image, &exception),
64 image->columns,
65 image->rows,
66 image->depth,
67 image->colors
68 );
69
70 ipix = AcquireImagePixels(image, 0, 0,
71 image->columns ,image->rows,
72 &exception);
73 fprintf(stderr, "\ncounting ... \n");
74 memset(M,0,sizeof(M));
75 for(i=0; i < image->columns*image->rows ; i++)
76 {
77 r = ScaleQuantumToChar(ipix[i].red);
78 g = ScaleQuantumToChar(ipix[i].green);
79 b = ScaleQuantumToChar(ipix[i].blue);
80
81 M[0][r*256 + g] < 255 ? M[0][r*256 + g] += 1:0;
82 M[1][g*256 + b] < 255 ? M[1][g*256 + b] += 1:0;
83 M[2][b*256 + r] < 255 ? M[2][b*256 + r] += 1:0;
84 }
85
86 fprintf(stderr, "Writeing file...\n");
87 rgimage = ConstituteImage(256,256,"I",CharPixel,M[0],&exception);
88 gbimage = ConstituteImage(256,256,"I",CharPixel,M[1],&exception);
89 brimage = ConstituteImage(256,256,"I",CharPixel,M[2],&exception);
90
91 fprintf(stderr, "Writeing file: %s\n", rgfilename);
92 (void) strcpy(rgimage->filename, rgfilename);
93 WriteImage(image_info, rgimage);
94 fprintf(stderr, "Writeing file: %s\n", gbfilename);
95 (void) strcpy(gbimage->filename, gbfilename);
96 WriteImage(image_info, gbimage);
97 fprintf(stderr, "Writeing file: %s\n", brfilename);
98 (void) strcpy(brimage->filename, brfilename);
99 WriteImage(image_info, brimage);
100
101 image_info=DestroyImageInfo(image_info);
102
103 DestroyExceptionInfo(&exception);
104 DestroyMagick();
105 return(0);
106 }