Color reduction in general results in an image with fewer colors than the original, even if the bit depth is not changed. There are a number of color reduction methods, and ImageGear provides several different functions from which you can choose the one that is most suitable in a given case. Below you can see the color reduction methods that are available, and the functions that perform them:
IG_IP_color_reduce_bayer() | Reduces a 4, 8, or 24-bit image to a 4-bit image using a Bayer dithering algorithm. |
IG_IP_color_reduce_to_bitonal() | Reduces a 4, 8, or 24-bit image to a 1-bit or "bi-tonal" image. |
IG_IP_color_reduce_median_cut() | Reduces a 24-bit image to an 8-bit image using the median cut algorithm. |
IG_IP_color_reduce_diffuse() | Reduces a 4, 8, or 24-bit image to a 1-bit or 4-bit image using a diffusion algorithm. |
IG_IP_color_reduce_popularity() | Reduces a 24-bit image to an 8-bit image, while preserving its most prevalent or popular colors. |
IG_IP_color_reduce_octree() | Reduces a 24-bit or 8-bit image to an 8-bit or 4-bit image. Uses an efficient algorithm that gives a result as close to the original as possible, using the number of colors you specify. |
IG_IP_color_reduce_halftone() | Reduces a 4, 8, or 24-bit image to a 1-bit image using a halftone pattern. |
Refer to the function descriptions in the Core Component API Function Reference for the calling sequences and further information on the above.
The additional function IG_IP_convert_to_gray() is also considered a color reduction function. It is called as follows:
Copy Code | |
---|---|
IG_IP_convert_to_gray ( hIGear ); |
It always converts the image to 8-bit gray level. The resulting DIB has a 256-entry palette, and each 8-bit pixel value in the resulting image bitmap is a weighted average of the three color intensities of the pixel in the original image.
The following table lists supported input and output bit depths for color reduction functions:
Function Name | Bpp In |
Use or create palette for output image | BppOut |
IG_IP_color_reduce_bayer() | 24 | use standard B/W palette | 1 |
8 | use standard B/W palette | 1 | |
4 | use standard B/W palette | 1 | |
24 | use given palette | 4 | |
8 | use given palette | 4 | |
24 | use standard palette | 4 | |
8 | use standard palette | 4 | |
IG_IP_color_reduce_diffuse() | 24 | use standard B/W palette | 1 |
8 | use standard B/W palette | 1 | |
4 | use standard B/W palette | 1 | |
24 | use given palette | 4 | |
8 | use given palette | 4 | |
24 | use standard palette | 4 | |
8 | use standard palette | 4 | |
IG_IP_color_reduce_halftone() | 24 | use standard B/W palette | 1 |
8 | use standard B/W palette | 1 | |
4 | use standard B/W palette | 1 | |
IG_IP_color_reduce_median_cut() | 24 | create optimal palette | 8 |
IG_IP_color_reduce_octree() | 24 | use given palette (maxcolors > 16) | 8 |
8 | use given palette (maxcolors > 16) | 8 | |
24 | create optimal palette (maxcolors > 16) | 8 | |
8 | create optimal palette (maxcolors > 16) | 8 | |
24 | use given palette (maxcolors <= 16) | 4 | |
8 | use given palette (maxcolors <= 16) | 4 | |
24 | create optimal palette (maxcolors <= 16) | 4 | |
8 | create optimal palette (maxcolors <= 16) | 4 | |
IG_IP_color_reduce_popularity() | 24 | create optimal palette | 8 |
IG_IP_color_reduce_to_bitonal() | 24 | use standard B/W palette | 1 |
8 | use standard B/W palette | 1 | |
4 | use standard B/W palette | 1 |