回答
这些怎么样:第一
function rgbaToRgb ($rgba, $blend = 0xFFFFFF) {
return (($rgba >> 8)*($rgba & 0xFF)/0xFF) * ($blend/0xFFFFFF);
}
function rgbToRgba ($rgb) {
return ($rgb << 8) | 0xFF;
}
$融合是一个有效的背景颜色与融合。
编辑:修复由于没有足够的空间inint破坏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);
}
RGBA - > RGB应该很简单,因为它只是剪掉最后两位数字。另一个方向是不可能的,因为alpha信息不是以RGB编码的。
好吧,反向会在最后加上“FF”。我正在寻找其他解决方案,字符串 - >剪切最后2个字符 - >十六进制 – Kacper
正如弗兰克所说,你可以简单地去掉最后两位数字。
十六进制格式是3对数字,第一对红色值,下一个是绿色,下一个是蓝色。如果你添加另一对,它被认为是alpha值。
我知道这两件事,但我正在寻找基于位的解决方案。 – Kacper
这两个函数会做你需要的东西:
function rgbaToRgb ($rgba) {
return substr($rgba, 0, -2);
}
function rgbToRgba ($rgb) {
return $rgb . "FF";
}
第一个只会删除最后两个字符,而第二个就追加FF
。
正如我所说,我正在寻找其他解决方案,使用字符串:) – Kacper
- 1. RGBA Hex from RGB Hex
- 2. 将浮点数转换为RGB或HEX
- 3. 将RGB转换为HEX失败
- 4. 如何将Hex转换为RGB?
- 5. 如何将Hex转换为RGB? (perl)
- 6. 如何将ImagickPixel :: getColorAsString转换为Color HEX格式
- 7. 转换HEX到RGBA手写笔
- 8. 以编程方式将RGB转换为HEX - Android
- 9. 如何将资源仅转换为hex格式的* .cpp文件?
- 10. HEX字符串转换为EBCDIC返回数字格式异常
- 11. 如何将00-00格式的hex转换为double?
- 12. 使用HEX或RGBA
- 13. PHP - HEX到EBCDIC转换
- 14. 三重HEX代码为RGB
- 15. Elixir或Hex便携包的格式?
- 16. HSQLDB:将NUMERIC转换为HEX
- 17. 将NSString转换为int HEX
- 18. HEX到BIN转换
- 19. 将像素值转换为RGB格式
- 20. 根据StackOverflow主题之一将RGB转换为HEX问题
- 21. 我如何转换RGB到HEX(为渐变)
- 22. 将颜色RGB转换为HEX(int结果)
- 23. 将HTML HEX颜色或RGB元组转换为X11颜色
- 24. 如何将RGB颜色或Hex转换为HSB?
- 25. 将负十进制数转换为十六进制HEX和HEX
- 26. 将RGB转换为RGBA
- 27. RAL到RGB/HEX通过javascript
- 28. 在C++中将RGB转换为HDR图像格式(EXR格式)
- 29. 转换RGBA到ARGB像素格式
- 30. 将JSON格式的HTML编码为HEX是必要的吗?
应该像从RGBA字符串中剥离最后两个字符一样简单,并将'FF'附加到RGB字符串。 –
你现在存储的值如何?作为整数?例如'$ rgba = \ xFF0000FF;'? –