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 1-bit or 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 |