From 0c4fc529678573dedbef740c1ccb6820d1764d37 Mon Sep 17 00:00:00 2001 From: kdx Date: Tue, 9 May 2023 15:15:59 +0200 Subject: handle alpha --- pximg.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pximg.c b/pximg.c index 2eec9b8..c5afbc4 100644 --- a/pximg.c +++ b/pximg.c @@ -89,13 +89,13 @@ indexed(char **argv) /* read image */ int img_w, img_h, img_col_chans; uint8_t *const img_data = - stbi_load(argv[2], &img_w, &img_h, &img_col_chans, 3); + stbi_load(argv[2], &img_w, &img_h, &img_col_chans, 4); if (img_data == NULL) { fprintf(stderr, "error: failed to load image\n"); return 1; } - if (pal_col_chans != 3) { + if (pal_col_chans != 4) { fprintf(stderr, "error: image isn't RBG\n"); stbi_image_free(img_data); return 1; @@ -111,10 +111,12 @@ indexed(char **argv) for (int i = 0; i < img_w * img_h; i++) { int col = -1; for (int k = 0; k < pal_size; k++) - if (memcmp(pal + k * 3, img_data + i * 3, 3) == 0) { + if (memcmp(pal + k * 3, img_data + i * 4, 3) == 0) { col = k; break; } + if (img_data[i * 4 + 3] == 0) + col = 0; if (col == -1) { fprintf(stderr, "color at pixel %d:%d not found in palette\n", -- cgit v1.2.3