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