(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
imagecolorclosestalpha β ΠΠΎΠ»ΡΡΠ°Π΅Ρ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ²Π΅ΡΠ° Ρ ΡΡΡΡΠΎΠΌ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ
$image,$red,$green,$blue,$alpha
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Β«Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉΒ» ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ RGB-Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΈ alpha-ΡΡΠΎΠ²Π½Ρ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ²Π΅ΡΠ° Π² ΠΏΠ°Π»ΠΈΡΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
imageredΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ²Π΅ΡΠ°.
greenΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ²Π΅ΡΠ°.
blueΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠ½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ²Π΅ΡΠ°.
alpha
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 0 Π΄ΠΎ 127.
0 ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ,
127 ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ²Π΅ΡΠ° Π² ΠΏΠ°Π»ΠΈΡΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΠΎΠΈΡΠΊ Π½Π°Π±ΠΎΡΠ° ΡΠ²Π΅ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
<?php
// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² ΠΏΠ°Π»ΠΈΡΡΠΎΠ²ΠΎΠ΅
$im = imagecreatefrompng('figures/imagecolorclosest.png');
imagetruecolortopalette($im, false, 255);
// Π¦Π²Π΅ΡΠ° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° (RGB)
$colors = array(
array(254, 145, 154, 50),
array(153, 145, 188, 127),
array(153, 90, 145, 0),
array(255, 137, 92, 84)
);
// ΠΡΠΎΡ
ΠΎΠ΄ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ²Π΅ΡΡ ΠΈ ΠΏΠΎΠΈΡΠΊ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΠΊ Π½Π΅ΠΌΡ Π² ΠΏΠ°Π»ΠΈΡΡΠ΅.
// ΠΠΎΠ·Π²ΡΠ°Ρ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ, RGB ΠΈΡΠΊΠΎΠΌΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ RGB ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅
foreach ($colors as $id => $rgb) {
$result = imagecolorclosestalpha($im, $rgb[0], $rgb[1], $rgb[2], $rgb[3]);
$result = imagecolorsforindex($im, $result);
$result = "({$result['red']}, {$result['green']}, {$result['blue']}, {$result['alpha']})";
echo "#$id: ΠΠΎΠΈΡΠΊ ($rgb[0], $rgb[1], $rgb[2], $rgb[3]); ΠΠ»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΡ
ΠΎΠ΄ΡΡΠ²ΠΎ: $result.\n";
}
?>ΠΡΠ²ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π°:
#0: ΠΠΎΠΈΡΠΊ (254, 145, 154, 50); ΠΠ»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΡ ΠΎΠ΄ΡΡΠ²ΠΎ: (252, 150, 148, 0). #1: ΠΠΎΠΈΡΠΊ (153, 145, 188, 127); ΠΠ»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΡ ΠΎΠ΄ΡΡΠ²ΠΎ: (148, 150, 196, 0). #2: ΠΠΎΠΈΡΠΊ (153, 90, 145, 0); ΠΠ»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΡ ΠΎΠ΄ΡΡΠ²ΠΎ: (148, 90, 156, 0). #3: ΠΠΎΠΈΡΠΊ (255, 137, 92, 84); ΠΠ»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΡΡ ΠΎΠ΄ΡΡΠ²ΠΎ: (252, 150, 92, 0).