В PHP, какой самый простой способ конвертировать триггер RGB в значения HSV?RGB для HSV в PHP
ответ
<?php
function RGB_TO_HSV ($R, $G, $B) // RGB Values:Number 0-255
{ // HSV Results:Number 0-1
$HSL = array();
$var_R = ($R/255);
$var_G = ($G/255);
$var_B = ($B/255);
$var_Min = min($var_R, $var_G, $var_B);
$var_Max = max($var_R, $var_G, $var_B);
$del_Max = $var_Max - $var_Min;
$V = $var_Max;
if ($del_Max == 0)
{
$H = 0;
$S = 0;
}
else
{
$S = $del_Max/$var_Max;
$del_R = ((($var_Max - $var_R)/6) + ($del_Max/2))/$del_Max;
$del_G = ((($var_Max - $var_G)/6) + ($del_Max/2))/$del_Max;
$del_B = ((($var_Max - $var_B)/6) + ($del_Max/2))/$del_Max;
if ($var_R == $var_Max) $H = $del_B - $del_G;
else if ($var_G == $var_Max) $H = (1/3) + $del_R - $del_B;
else if ($var_B == $var_Max) $H = (2/3) + $del_G - $del_R;
if ($H<0) $H++;
if ($H>1) $H--;
}
$HSL['H'] = $H;
$HSL['S'] = $S;
$HSL['V'] = $V;
return $HSL;
}
Я прибрал несколько ошибок в этом коде, протестировал его против известных результатов, и он отлично работает. Благодаря! –
Я пытаюсь понять, как работает HSV. Прежде чем вы вернете значения, вам не нужно умножать $ H на 360, а $ S и $ V на 100? –
@JackHumphries - см. Мой ответ, чтобы немного легче следовать версии, которая также возвращает градусы и проценты. – Unsigned
Вот простой, простой метод, который возвращает значения HSV как градусы и проценты, что и использует выбор цвета в Photoshop.
Обратите внимание, что возвращаемые значения не округлены, вы можете сделать это сами, если потребуется. Имейте в виду, что H(360) == H(0)
, так H
значения 359.5
и больше должны вокруг к 0
Крупной документированы для целей обучения.
/**
* Licensed under the terms of the BSD License.
* (Basically, this means you can do whatever you like with it,
* but if you just copy and paste my code into your app, you
* should give me a shout-out/credit :)
*/
<?php
function RGBtoHSV($R, $G, $B) // RGB values: 0-255, 0-255, 0-255
{ // HSV values: 0-360, 0-100, 0-100
// Convert the RGB byte-values to percentages
$R = ($R/255);
$G = ($G/255);
$B = ($B/255);
// Calculate a few basic values, the maximum value of R,G,B, the
// minimum value, and the difference of the two (chroma).
$maxRGB = max($R, $G, $B);
$minRGB = min($R, $G, $B);
$chroma = $maxRGB - $minRGB;
// Value (also called Brightness) is the easiest component to calculate,
// and is simply the highest value among the R,G,B components.
// We multiply by 100 to turn the decimal into a readable percent value.
$computedV = 100 * $maxRGB;
// Special case if hueless (equal parts RGB make black, white, or grays)
// Note that Hue is technically undefined when chroma is zero, as
// attempting to calculate it would cause division by zero (see
// below), so most applications simply substitute a Hue of zero.
// Saturation will always be zero in this case, see below for details.
if ($chroma == 0)
return array(0, 0, $computedV);
// Saturation is also simple to compute, and is simply the chroma
// over the Value (or Brightness)
// Again, multiplied by 100 to get a percentage.
$computedS = 100 * ($chroma/$maxRGB);
// Calculate Hue component
// Hue is calculated on the "chromacity plane", which is represented
// as a 2D hexagon, divided into six 60-degree sectors. We calculate
// the bisecting angle as a value 0 <= x < 6, that represents which
// portion of which sector the line falls on.
if ($R == $minRGB)
$h = 3 - (($G - $B)/$chroma);
elseif ($B == $minRGB)
$h = 1 - (($R - $G)/$chroma);
else // $G == $minRGB
$h = 5 - (($B - $R)/$chroma);
// After we have the sector position, we multiply it by the size of
// each sector's arc (60 degrees) to obtain the angle in degrees.
$computedH = 60 * $h;
return array($computedH, $computedS, $computedV);
}
?>
Удивительный ответ. Был только то, что мне нужно, чтобы узнать, как рассчитать ценность части HSV. Ty. – Deanie
Есть ли способ отменить этот процесс, преобразовывая его обратно? – JacobTheDev
@JacobTheDev Конечно. [Этот вопрос] (https://stackoverflow.com/q/3018313/629493) содержит примеры. – Unsigned
- 1. RGB для преобразования HSV
- 2. Преобразование RGB в HSV
- 3. PHP HSV в RGB формулы понимания
- 4. Opencv: RGB To HSV
- 5. Преобразование изображения rgb в hsv
- 6. Преобразование значения RGB в HSV
- 7. Как конвертировать RGB в HSV?
- 8. OpenCV Java RGB или HSV?
- 9. Преобразование RGB в HSV в android
- 10. Преобразование HSV в RGB в OpenCV
- 11. Преобразование RGB в HSV с использованием PIL
- 12. OpenCV преобразование изображения из RGB в HSV
- 13. RGB в HSV Python, изменить Hue непрерывно
- 14. Преобразование RGB в HSB (aka HSV)
- 15. Используйте HSV вместо RGB в WPF
- 16. Почему мы конвертируем из RGB в HSV
- 17. RGB в HSV с использованием colorsys
- 18. ошибка при преобразовании из RGB в HSV
- 19. создание гистограммы HSV с использованием изображения RGB
- 20. HSV to RGB Остановка на желтом C#
- 21. Цветное имя для RGB/Hex/HSL/HSV и т. Д.
- 22. opencv время выполнения для преобразования rgb в hsv
- 23. Полный спектр оттенков: преобразование цвета HSV в RGB для OpenCV
- 24. Изображение HSV отличается от изображения rgb
- 25. Выбор цветовой схемы спектра HSV до RGB
- 26. Как изменить цвет RGB на HSV?
- 27. Как найти параметры цвета RGB/HSV для отслеживания цвета?
- 28. Создайте редактор кисти градиента wpf. (Цвет RGB для HSL/HSV)
- 29. UIColor преобразование из RGB в HSV, установка яркости в UIColor
- 30. Странное явление при преобразовании RGB в HSV вручную в Matlab
Быстрый поиск в google найден http://delphi.about.com/od/adptips2006/qt/RgbToHsb.htm. Не в PHP, но все математическое, так что это должно быть легко. – mk12