You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将带Alpha通道的8位Hex颜色转换为适配白色背景的6位Hex颜色

8位带透明度Hex转白色背景下的6位Hex(扁平化)

核心算法原理

8位Hex格式为 #RRGGBBAA,其中:

  • RR/GG/BB:前景色的红/绿/蓝通道(十六进制00-FF,对应十进制0-255)
  • AA:透明度通道(十六进制00=完全透明,FF=完全不透明,对应十进制0-255)

假设背景为纯白色(RGB=(255,255,255)),最终扁平化后的每个RGB通道值计算公式为:

最终通道值 = 前景通道值 * (Alpha / 255) + 255 * (1 - Alpha / 255)

计算后对结果四舍五入取整,再转换为两位十六进制字符串,拼接成标准6位Hex颜色(格式#RRGGBB)。

示例颜色转换结果

以下是你提供的颜色经过计算后的扁平化结果:

  • 原颜色 #14C4C1FD → 扁平化后 #16C4C1
  • 原颜色 #F25021F4 → 扁平化后 #F3582B
  • 原颜色 #FE7162FD → 扁平化后 #FE7263
  • 原颜色 #A259FFFD → 扁平化后 #A35AFF
  • 原颜色 #6A9A9C60 → 扁平化后 #DCE7E8
  • 原颜色 #28B8ABBB → 扁平化后 #61CBC1
  • 原颜色 #5B9CB931 → 扁平化后 #DFECF2

PowerShell 实现脚本

function Convert-8BitHexToFlat6Bit {
    param(
        [Parameter(Mandatory=$true)]
        [string[]]$HexColors
    )

    foreach ($hex in $HexColors) {
        # 去除#号并统一转为大写
        $cleanHex = $hex.TrimStart('#').ToUpper()
        if ($cleanHex.Length -ne 8) {
            Write-Warning "无效的8位Hex颜色:$hex"
            continue
        }

        # 拆分各通道为十进制值
        $r = [Convert]::ToInt32($cleanHex.Substring(0,2), 16)
        $g = [Convert]::ToInt32($cleanHex.Substring(2,2), 16)
        $b = [Convert]::ToInt32($cleanHex.Substring(4,2), 16)
        $alpha = [Convert]::ToInt32($cleanHex.Substring(6,2), 16)

        # 计算扁平化后的RGB值
        $alphaRatio = $alpha / 255.0
        $flatR = [Math]::Round($r * $alphaRatio + 255 * (1 - $alphaRatio))
        $flatG = [Math]::Round($g * $alphaRatio + 255 * (1 - $alphaRatio))
        $flatB = [Math]::Round($b * $alphaRatio + 255 * (1 - $alphaRatio))

        # 确保值在0-255的合法范围内
        $flatR = [Math]::Clamp($flatR, 0, 255)
        $flatG = [Math]::Clamp($flatG, 0, 255)
        $flatB = [Math]::Clamp($flatB, 0, 255)

        # 转换为两位十六进制并拼接成最终颜色
        $flatHex = "#$($flatR.ToString('X2'))$($flatG.ToString('X2'))$($flatB.ToString('X2'))"

        # 输出结果
        [PSCustomObject]@{
            Original = $hex
            Flat6BitHex = $flatHex
        }
    }
}

# 测试示例颜色
$sampleColors = @(
    "#14C4C1FD",
    "#F25021F4",
    "#FE7162FD",
    "#A259FFFD",
    "#6A9A9C60",
    "#28B8ABBB",
    "#5B9CB931"
)

Convert-8BitHexToFlat6Bit -HexColors $sampleColors

脚本说明

  1. 函数Convert-8BitHexToFlat6Bit支持批量转换多个8位Hex颜色
  2. 自动验证输入格式,对无效颜色抛出警告
  3. 通过数学公式计算白色背景下的扁平化颜色,四舍五入保证视觉准确性
  4. 内置值范围限制,避免出现超出0-255的非法RGB值

内容的提问来源于stack exchange,提问作者fmotion1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 17:02:11