RGBA формат HEX в формате RGB HEX? PHP

Я хочу конвертировать туда и обратно между RGBA-образованными цветами HEX (например, 0xFF0000FF ) и RGB-образованными цветами HEX (например, 0xFF0000 ) в PHP.

Как я могу это сделать?

Как на счет этих:

 function rgbaToRgb ($rgba, $blend = 0xFFFFFF) { return (($rgba >> 8)*($rgba & 0xFF)/0xFF) * ($blend / 0xFFFFFF); } function rgbToRgba ($rgb) { return ($rgb << 8) | 0xFF; } 

$ blend в первом эффекте – это цвет фона, с которым можно смешаться.

Изменить: исправить из-за нехватки места в ints, разрушающем RGBA. RGBA теперь обрабатывается как массив из четырех частей. RGB остается рядом:

 function rgbaToRgb ($rgba, $blend = 0xFFFFFF) { $rbg = array($rgba[0] * $rgba[3]/0xFF + ($blend>>16) * (0xFF-$rgba[3])/0xFF, $rgba[1] * $rgba[3]/0xFF + (($blend>>8)&0xFF)*(0xFF-$rgba[3])/0xFF, $rgba[2] * $rgba[3]/0xFF + ($blend&0xFF) * (0xFF-$rgba[3])/0xFF); return ($rbg[0]<<16) + ($rbg[1]<<8) + $rbg[2]; } function rgbToRgba ($rgb) { return array($rgb >> 16, ($rgb >> 8) & 0xFF, $rgb & 0xFF, 0xFF); } 

Эти две функции будут делать то, что вам нужно:

 function rgbaToRgb ($rgba) { return substr($rgba, 0, -2); } function rgbToRgba ($rgb) { return $rgb . "FF"; } 

Первый просто удаляет последние два символа, а второй просто добавляет FF .

RGBA -> RGB должен быть простым, так как он просто отключает последние две цифры. Другое направление невозможно, так как альфа-информация не кодируется в RGB.

Как отметил Фрэнк, вы можете просто удалить последние 2 цифры.

Шестнадцатеричный формат – 3 пары чисел, первая пара красного значения, следующая – Зеленая, а следующая – синяя. Если вы добавите еще одну пару, это считается альфа-значением.