From 1ce0b86124d5607c5b51afc5be50b8ddc93b8c39 Mon Sep 17 00:00:00 2001 From: mutantturkey Date: Mon, 2 Jul 2012 09:13:02 -0400 Subject: updated makefile --- fly-tools/background/pixel.c | 185 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 fly-tools/background/pixel.c (limited to 'fly-tools/background') diff --git a/fly-tools/background/pixel.c b/fly-tools/background/pixel.c new file mode 100644 index 0000000..2330678 --- /dev/null +++ b/fly-tools/background/pixel.c @@ -0,0 +1,185 @@ +#include +#include +#include +#include +#include +#include + +//#define round(x)((x)>=0?(int)((x)+0.5):(int)((x)-0.5)) +#define round(x)((int)((x)+0.5)) +#define ThrowWandException(wand) { char *description; ExceptionType severity; description=MagickGetException(wand,&severity); (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); description=(char *) MagickRelinquishMemory(description); exit(-1); } + +int findmax (uint8_t *p, int n) +{ + int mx = 0, v = p[0]; + for (int i = 1; i < n; i++) { + if (p[i] > v) { + v = p[i]; + mx = i; + } + } + return mx; +} + +int main(int argc, char **argv ) { + + MagickWand *magick_wand, *first_wand, *output_wand; + PixelIterator *input_iterator, *output_iterator; + PixelWand **pixels, *p_out; + + double green, red, blue; + + int i,j, k, x, y; + int image = 0; + int nImages = 0; + + unsigned long height, width; + + + char filename[256]; + char rgb[128]; + char *temp; + + FILE *input_file; + + uint8_t ****array; + uint8_t ***output; + + // open the first image and get the height and width + first_wand = NewMagickWand(); + if(MagickReadImage(first_wand, argv[2]) == MagickFalse) { + ThrowWandException(first_wand); + } + + height = MagickGetImageHeight(first_wand); + width = MagickGetImageWidth(first_wand); + + first_wand = DestroyMagickWand(first_wand); + + printf("height: %ld width:%ld \n", height, width); + + + // count how many images there are in the input file + FILE *count = fopen( argv[1], "r"); + if(count != NULL) { + while((fgets(filename, sizeof(filename), count)) != NULL) { + nImages++; + } + fclose(count); + } + + printf("number of images: %d \n", nImages); + + + // initialize the storage arrays + output = calloc(height, sizeof(output[0])); + for(i = 0; i < height; i++) { + output[i] = calloc(width, sizeof(output[0][0])); + for(j = 0; j < width; j++) { + output[i][j] = calloc(3, sizeof(output[0][0][0])); + } + } + + array = calloc(nImages, sizeof(array[0])); + for(i = 0; i < nImages; i++) { + array[i] = calloc(height, sizeof(array[0][0])); + for(j = 0; j < (long) height; j++) { + array[i][j] = calloc(width, sizeof(array[0][0][0])); + for(k = 0; k < width; k++){ + array[i][j][k] = calloc(3, sizeof(array[0][0][0][0])); + } + } + } + + MagickWandGenesis(); + + // store each pixel in the storage array. array[nImage][height][width][ { R, G, B} ] + input_file = fopen ( argv[1], "r" ); + if ( input_file != NULL ) { + while ((fgets(filename, sizeof(filename), input_file)) != NULL ) { + temp = strchr(filename, '\n'); + if (temp != NULL) *temp = '\0'; + + magick_wand = NewMagickWand(); + MagickReadImage(magick_wand, filename); + + input_iterator = NewPixelIterator(magick_wand); + + printf("Image number:%d Filename: %s \n", image, filename); + for (i=0; i