RGBA格式HEX转换为RGB格式HEX? PHP

时间:2011-07-12 21:46:36

标签: php hex rgb rgba

我想在PHP中来回转换RGBA格式的HEX颜色(如0xFF0000FF)和RGB格式的HEX颜色(如0xFF0000)。

我该怎么做?

4 个答案:

答案 0 :(得分:2)

这两个功能将满足您的需求:

function rgbaToRgb ($rgba) {
    return substr($rgba, 0, -2);
}

function rgbToRgba ($rgb) {
    return $rgb . "FF";
}

第一个只删除最后两个字符,而第二个只添加FF

答案 1 :(得分:1)

这些怎么样:

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

function rgbToRgba ($rgb) {
    return ($rgb << 8) | 0xFF;
}
第一个中的$ blend实际上是一种混合的背景颜色。

编辑:由于没有足够的空间破坏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);
}

答案 2 :(得分:0)

RGBA - &gt; RGB应该很简单,因为它只是切掉最后两位数字。另一个方向是不可能的,因为alpha信息不是用RGB编码的。

答案 3 :(得分:0)

正如弗兰克所说,你可以简单地删除最后两位数字。

十六进制格式是3对数字,第一对红色值,下一个是绿色,下一个是蓝色。如果添加另一对,则假定它是alpha值。