Following Color class will allow you to convert colors from RGB to hex and back
class Color
{
/** int $red */
public $red;
/** int $green */
public $green;
/** int $blue */
public $blue;
/**
* Color constructor.
* @param $red
* @param $green
* @param $blue
*/
public function __construct($red, $green, $blue)
{
$this->red = $red;
$this->green = $green;
$this->blue = $blue;
}
// ...
}
Convert from HEX string to RGB add this function to our class
public static function convertToRGB($hex)
{
$hex = ltrim($hex, "#");
if (!ctype_xdigit($hex))
throw new NotHexException();
$red = hexdec(substr($hex, 0, 2));
$green = hexdec(substr($hex, 2, 2));
$blue = hexdec(substr($hex, 4, 2));
return new Color($red, $green, $blue);
}
This is how you can convert from rgb back to HEX string.
public static function convertToHex(Color $color)
{
$red = dechex($color->red);
if (strlen($red) < 2) $red = '0' . $red;
$green = dechex($color->green);
if (strlen($green) < 2) $green = '0' . $green;
$blue = dechex($color->blue);
if (strlen($blue) < 2) $blue = '0' . $blue;
return '#' . $red . $green . $blue;
}
One thing is missing and it’s exception which is used in convertToRGB
function:
class NotHexException extends \Exception
{
public function __construct($message = "String you have provided is not HEX", $code = 0, Throwable $previous = null)
{
parent::__construct($message, $code, $previous);
}
}
To use it
use MayMeow\PHPColor\Color;
// ...
$color = new Color(198, 255, 32);
$hex = Color::convertToHex($color); //#c6ff20
and back to RGB
use MayMeow\PHPColor\Color;
// ...
try {
$rgb = Color::convertToRGB($hex); // color object: Color(198, 255, 32)
} catch (\MayMeow\PHPColor\Exceptions\NotHexException $exception)
{
// do something, echo message or log ...
}
Photo by Sharon McCutcheon on Unsplash
Reply by Email