RGB565颜色查询对照表详解

发布时间:2023-05-19

RGB565颜色查询对照表

RGB565是一种常用的颜色编码方式,在嵌入式系统和游戏开发中经常使用。RGB565颜色查询对照表是一份关于这种编码方式的重要参考资料,本文将从多个方面对该对照表进行详细的阐述。

一、颜色编码原理

RGB565使用16位二进制来表示一个颜色,其中5位用于表示红色分量,6位用于表示绿色分量,5位用于表示蓝色分量。每个分量可以取02^5-1(即031)之间的整数,因此RGB565总共可以表示2^16(即65536)种颜色。

二、颜色编码示例

下面是一个将RGB颜色值转换为RGB565编码的示例代码:

unsigned short RGB565(unsigned char red, unsigned char green, unsigned char blue)
{
    unsigned short color = 0;
    color |= (red >> 3) << 11;      //将red的高5位放到color的高5位
    color |= (green >> 2) << 5;     //将green的高6位放到color的中间6位
    color |= blue >> 3;             //将blue的高5位放到color的低5位
    return color;
}

在这个示例中,首先将红色分量右移3位,再左移11位,将其存储在颜色值的高5位中。接着将绿色分量右移2位,再左移5位,将其存储在颜色值的中间6位中。最后将蓝色分量右移3位,存储在颜色值的低5位中。

三、颜色编码和名称对照表

RGB565颜色查询对照表是一个将颜色编码和颜色名称对应的表格,下面是一份RGB565颜色查询对照表示例:

颜色编码 颜色名称 十六进制表示 RGB值
0 黑色 0x0000 (0,0,0)
31 白色 0xFFFF (255,255,255)
2016 红色 0xF800 (255,0,0)
63488 绿色 0x07E0 (0,255,0)
63423 蓝色 0x001F (0,0,255)
31744 黄色 0xFFE0 (255,255,0)

四、颜色编码查询工具

在实际开发中,我们经常需要使用颜色编码来设置各种图形和界面元素的颜色,但是手动计算编码十分繁琐。为了方便开发人员的使用,我们可以开发一个在线的颜色编码查询工具。下面是一个简单的实现:

<title>RGB565颜色编码查询器</title>
<style>
    table {
        border-collapse: collapse;
    }
    th, td {
        border: 1px solid black;
        padding: 5px;
    }
</style>
<form>
    <label for="r">红色(R): </label>
    <input type="number" name="r" id="r" min="0" max="255" value="0"><br>
    <label for="g">绿色(G): </label>
    <input type="number" name="g" id="g" min="0" max="255" value="0"><br>
    <label for="b">蓝色(B): </label>
    <input type="number" name="b" id="b" min="0" max="255" value="0"><br>
    <button type="submit">查询</button>
</form>
<table>
    <thead>
        <tr>
            <th>颜色名称</th>
            <th>颜色编码</th>
            <th>RGB值</th>
        </tr>
    </thead>
    <tbody>
        <?php
        if (isset($_GET['r']) && isset($_GET['g']) && isset($_GET['b'])) {
            $r = $_GET['r'];
            $g = $_GET['g'];
            $b = $_GET['b'];
            $code = RGB565($r, $g, $b);
            $name = find_color_name($code);
            echo "<tr>
                    <td>{$name}</td>
                    <td>{$code}</td>
                    <td>({$r},{$g},{$b})</td>
                  </tr>";
        }
        ?>
    </tbody>
</table>
<?php
function RGB565($red, $green, $blue) {
    $red   = $red >> 3;       // 取红色最高5位
    $green = $green >> 2;     // 取绿色最高6位
    $blue  = $blue >> 3;      // 取蓝色最高5位
    return ($red << 11) | ($green << 5) | $blue;
}
function find_color_name($code) {
    // 省略代码
}
?>