Finds the existing palette color closest to an RGB request.
What It Does
imagecolorallocate() creates a requested RGB color, while matching functions inspect a color table. Matching is approximate and is especially relevant to palette-based images.
Requirements and Compatibility
GD extension. Sample images and fonts referred to by filename must be supplied locally. Use PHP 8 GdImage objects where applicable; optional decoders depend on the installed build.
Syntax, Inputs and Results
The arguments shown below are concrete values for this function; their types and ranges matter. The example checks return data rather than assuming that every operation succeeds.
Example 1: Basic Use
Call the function with a concrete input and inspect its result.
<?php
if (!extension_loaded('gd')) throw new RuntimeException('GD extension required');
$palette = imagecreate(40, 40);
$paletteRed = imagecolorallocate($palette, 255, 0, 0);
imagecolorallocate($palette, 0, 0, 255);
$result = imagecolorclosest($palette, 245, 40, 40);
var_dump($result);
Example 2: Another Case
Change the inputs to observe the behavior on another case.
<?php
if (!extension_loaded('gd')) throw new RuntimeException('GD extension required');
$palette = imagecreate(40, 40);
$paletteRed = imagecolorallocate($palette, 255, 0, 0);
imagecolorallocate($palette, 0, 0, 255);
$result = imagecolorclosest($palette, 12, 230, 35);
var_dump($result);
// This example uses a different target color or alpha state.
Practical Example
Use the result to create an output, validate a condition, or complete an image workflow.
<?php
if (!extension_loaded('gd')) throw new RuntimeException('GD extension required');
$palette = imagecreate(40, 40);
$paletteRed = imagecolorallocate($palette, 255, 0, 0);
imagecolorallocate($palette, 0, 0, 255);
$color = imagecolorclosest($palette, 12, 230, 35);
if ($color === -1 || $color === false) throw new RuntimeException("Color unavailable");
imagefilledrectangle($palette, 4, 4, 30, 30, $color);
imagepng($palette, __DIR__ . "/color-demo-imagecolorclosest.png");
For production, apply the compatibility and edge-case limits described below.
Important Behavior and Edge Cases
Matching is approximate and is especially relevant to palette-based images.
Comparison with Related Functions and Tools
| Subject | Key difference |
|---|---|
| imagecolorclosest() | imagecolorallocate() creates a requested RGB color, while matching functions inspect a color table. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Calling imagecolorclosest() without its required input or supported extension | Check the extension, supply valid arguments, and handle false or exceptions according to the function. |
| Assuming imagecolorclosest() guarantees a valid or safe image | Matching is approximate and is especially relevant to palette-based images. |
| Confusing the operation with a related API | imagecolorallocate() creates a requested RGB color, while matching functions inspect a color table. |
Key Takeaways
- Finds the existing palette color closest to an RGB request.
- Matching is approximate and is especially relevant to palette-based images.
- Choose the companion API described in the comparison table when the job differs.
Use these examples as a starting point, then validate the result with the actual PHP build, dependencies and inputs used by your application.