次のRGB値があるとしましょう。
R:129 G:98 B:87
Photoshopによると、その色の彩度は33%です。
PHPとRGB値を使用してそのパーセンテージを計算するにはどうすればよいですか?
PHPのRGBからHSVを参照してください
そのコードから飽和ビットのみを取得し、パーセンテージに変換します。
function saturation($R, $G, $B) { // 0-255
$Min = min($R, $G, $B);
$Max = max($R, $G, $B);
return $Max == 0 ? 0 : (($Max - $Min) / $Max) * 100;
}
または、上記のリンクにある元のコードを使用することもできます。返されるHSV値は0.0〜1.0であるため、パーセンテージを取得するには、飽和値に100を掛けるだけです。
PEAR(PHP拡張機能とアプリケーションリポジトリ)には、 Image_Color2と呼ばれる優れたパッケージがあり、さまざまなカラーモデル間ですばやく変換できます。
include "Image/Color2.php";
$color = new Image_Color2(array(129,98,87));
$hsv = $color->convertTo('hsv');
$hsvArray = $hsv->getArray();
echo "Hue is " . $hsvArray[0] . "\n";
echo "Saturation is: " . $hsvArray[1] . "\n";
echo "Brightness is: " . $hsvArray[2];