From 1bcf91e9a2ddf12ba55cd06d460e958f510389a3 Mon Sep 17 00:00:00 2001 From: Andrew Haynes Date: Thu, 19 Mar 2026 17:46:47 -0400 Subject: [PATCH] wip --- .DS_Store | Bin 6148 -> 0 bytes compile_commands.json | 8 ++++ program | Bin 33960 -> 0 bytes src/main.c | 92 ++++++++++++------------------------------ 4 files changed, 34 insertions(+), 66 deletions(-) delete mode 100644 .DS_Store create mode 100644 compile_commands.json delete mode 100755 program diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 7c52a3419ea0d3b3c2e4a3ba54ca5e93edbf1969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!EVz)5S>k&#-XC*Kv9pDxJD&uQANeYb;AJ(E*QZ9P_W~uwYu>}u|q0Fk$i@q z=#c|lxWE^H_yNvbIPwd?%XlfhU9#L)m<9zTqe zNK8F3NupH7`pRH8>_)G-F`MmdZMU4x?u~iNneA@1Th8_Eo%y_BuV1}(^Iq?W4-@fR zk;w4Ok#bSvDZIc*sV08V@%v&pA_w;Jn6P9Yif&h*S@sFP^0of@!``w_^jn|NVIj}k z6WpSl=b1lFxJV9go$kE`Axt0!4$*Bc`uYy&DE3e{ze~Yc$+K7sSkcF_wOGlQfPR1M)$`cg>}eP<4E)m!(D~q?61p05h4SdYfevf3TZAMyrv^so zXmmB^3ekeXR4AefW%?6?sc>9(w4bXnSE#~)$;`Nq&dl@|3X|D!-I4CVT!m&d3>XH= z3{=%+lluRyUw{9XgUpp-z%cM%F~F>@-}SI0-CLK6qh9NvK1C%Vzg(dV!9llUIiXg( dfhq-U4owhUjk!WxK{0;>Bn@UT4E#|BegLmHxmN%H diff --git a/compile_commands.json b/compile_commands.json new file mode 100644 index 0000000..687696b --- /dev/null +++ b/compile_commands.json @@ -0,0 +1,8 @@ +[ +{ + "directory": "/Users/andrew/personal/Projects/C/image_processor", + "command": "/usr/bin/cc -I/Users/andrew/personal/Projects/C/image_processor/include -I/opt/homebrew/include -g -std=gnu2x -arch arm64 -o CMakeFiles/image_processor.dir/src/main.c.o -c /Users/andrew/personal/Projects/C/image_processor/src/main.c", + "file": "/Users/andrew/personal/Projects/C/image_processor/src/main.c", + "output": "CMakeFiles/image_processor.dir/src/main.c.o" +} +] \ No newline at end of file diff --git a/program b/program deleted file mode 100755 index 4ec36b3d812a48ec78b6840827b871e536ad02da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33960 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 @@ -238,23 +231,11 @@ rotate(unsigned int* buf, PPM* img, int len) } img->width = old_height; img->height = old_width; - free(buf); return mask; } static inline int -get_neighbor_idx(int curr_idx, int width, char* direction) -{ - if (strncmp(direction, "above", 5) == 0) return curr_idx - width; - if (strncmp(direction, "below", 5) == 0) return curr_idx + width; - if (strncmp(direction, "right", 5) == 0) return curr_idx + 1; - if (strncmp(direction, "left", 4) == 0) return curr_idx + 1; - - return curr_idx; -} - -static inline int -is_valid(int x, int y, int width, int height) +is_valid(const int x, const int y, const int width, const int height) { if (x < 0 || x >= width) return 0; if (y < 0 || y >= height) return 0; @@ -262,7 +243,7 @@ is_valid(int x, int y, int width, int height) } static inline unsigned int -brightness_mirror(unsigned int clr) +brightness_mirror(const unsigned int clr) { unsigned char red = decode_r(clr); unsigned char blue = decode_b(clr); @@ -270,32 +251,8 @@ brightness_mirror(unsigned int clr) return ENCODE_RGB(red, green, blue); } -static inline unsigned int -get_pixel_safe(unsigned int* buf, int x, int y, int width, int height) -{ - if (is_valid(x, y, width, height)) - { - return buf[(y * width + x)]; - } - return 0; -} - -static inline int -add_pixel(unsigned int pixel, unsigned int* red, unsigned int* green, - unsigned int* blue) -{ - if (pixel != 0) - { - *red += decode_r(pixel); - *green += decode_g(pixel); - *blue += decode_b(pixel); - return 1; - } - return 0; -} - static inline unsigned int* -box_blur(unsigned int* src_buf, PPM* img, int radius) +box_blur(const unsigned int* src_buf, const PPM* img, const int radius) { unsigned int* tmp_buf = malloc(img->len * sizeof(unsigned int)); if (!tmp_buf) return 0; @@ -370,7 +327,6 @@ box_blur(unsigned int* src_buf, PPM* img, int radius) } printf("Pass 2: Successful\n"); free(tmp_buf); - free(src_buf); return dst_buf; } @@ -396,7 +352,7 @@ ppm_decode(const char* file, PPM* img) fptr = fopen(file, "r"); if (!fptr) { - printf("Invalid file name: %s", file); + printf("Invalid file name: %s\n", file); return NULL; } fscanf(fptr, "%s", fmt); @@ -440,7 +396,7 @@ ppm_decode(const char* file, PPM* img) } static inline void -ppm_encode(unsigned int* buf, const PPM img) +ppm_encode(const unsigned int* buf, const PPM img) { if (!buf) return; unsigned char red, green, blue; @@ -484,7 +440,6 @@ ppm_encode(unsigned int* buf, const PPM img) } fclose(fptr); free(dst_buf); - free(buf); printf("Encode Done!\n"); } @@ -546,7 +501,6 @@ jpeg_encode(unsigned int* src_buf, JPEG* attr, char* name) tj3Destroy(tjcompress); tj3Free(dst_buf); - if (src_buf) free(src_buf); printf("Encode Successful!\n"); } @@ -554,7 +508,6 @@ void ppm_to_jpeg(PPM* in, JPEG* out) { unsigned int* src_buf = ppm_decode(in->name, in); - // int jpeg_size = jpeg->width * jpeg->height; out->width = in->width; out->height = in->height; jpeg_encode(src_buf, out, out->name); @@ -573,17 +526,24 @@ jpeg_to_ppm(JPEG* input, PPM* out) int main() { - PPM ppm = { .width = 3, - .height = 2, - .name = "../assets/8ktest.ppm", - .len = 0, - .fmt = "P6" }; - JPEG jpeg = { .width = 3, - .height = 2, - .len = 0, - .name = "../test.jpg" }; + JPEG jpeg = { + .width = 3, + .height = 2, + .len = 0, + .name = + "/Users/andrew/personal/Projects/C/image_processor/assets/wp12450035.jpg" + }; - // jpeg_to_ppm(&jpeg, &ppm); - ppm_to_jpeg(&ppm, &jpeg); + unsigned int* src_buf = jpeg_decode(&jpeg); + if(src_buf) { + for(int i = 0; i < jpeg.width * jpeg.height; i++) { + src_buf[i] = channel_mask(src_buf[i], 'b'); + } + } + jpeg_encode(src_buf, &jpeg, "../test.jpg"); + if (src_buf) + { + free(src_buf); + } return 0; }