Advertisement
LilChicha174

Untitled

May 31st, 2022
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.30 KB | None | 0 0
  1. int is_color_inside(png_bytep *all_colors, png_bytep color, int kl) {
  2.     for (int i = 0; i < kl; i++) {
  3.         if (all_colors[i][0]==color[0] && all_colors[i][1]==color[1] &&
  4.         all_colors[i][2]==color[2] && all_colors[i][3]==color[3]){
  5.             return 1;
  6.         }
  7.     }
  8.     return 0;
  9. }
  10.  
  11. int count_colors(struct Png *image) {
  12.     int kl = 0;
  13.     int clr = 100;
  14.     int colour_width = 4;
  15.     png_bytep *all_colors = malloc(clr * sizeof(png_bytep));
  16.     for (int i = 0; i < clr; i++) {
  17.         all_colors[i] = malloc(colour_width * sizeof(png_byte));
  18.     }
  19.  
  20.     for (int y = 0; y < image->height; y++) {
  21.         png_bytep row = image->row_pointers[y];
  22.         for (int x = 0; x < image->width; x++) {
  23.             png_bytep ptr = &(row[x * 4]);
  24.             if(!is_color_inside(all_colors, ptr, kl)){
  25.                 all_colors[kl] = ptr;
  26.                 kl++;
  27.                 if(kl==(clr-1)){
  28.                     clr+=10;
  29.                     all_colors = realloc(all_colors, clr * sizeof(png_bytep));
  30.                 }
  31.             }
  32.         }
  33.  
  34.     }
  35.     puts("Все цвета изображения:");
  36.     for (int i = 0; i < kl; i++) {
  37.         printf("%d %d %d %d\n", all_colors[i][0], all_colors[i][1], all_colors[i][2],
  38.                all_colors[i][3]);
  39.     }
  40.     return kl;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement