c# - 如何在 C# 中将 RGB555 转换为 RGB888?

标签 c# rgb

我需要将 16 位 XRGB1555 转换为 24 位 RGB888。我的函数如下,但它并不完美,即 0b11111 的值将给出 248 作为像素值,而不是 255。此函数适用于小端,但可以轻松修改为大端。

public static Color XRGB1555(byte b0, byte b1)
{ 
    return Color.FromArgb(0xFF, (b1 & 0x7C) << 1, ((b1 & 0x03) << 6) | ((b0 & 0xE0) >> 2), (b0 & 0x1F) << 3); 
}

有什么想法可以让它发挥作用吗?

最佳答案

您通常会将最高位复制到最低位,因此如果您有如下五位:

Bit position: 4 3 2 1 0
Bit variable: A B C D E

您可以将其扩展为八位:

Bit position: 7 6 5 4 3 2 1 0
Bit variable: A B C D E A B C

这样,所有的零都保持为所有的零,所有的都变成了所有的,并且两者之间的值适本地缩放。

(请注意,A、B、C 等不应该是十六进制数字 - 它们是代表单个位的变量)。

关于c# - 如何在 C# 中将 RGB555 转换为 RGB888?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4409763/

相关文章:

C# 转换 YUV 4 :2:2 to RGB?

java - 在浏览器中查看正在运行的应用程序输出,如何?

matlab - 查找 RGB 图像中像素的最大值

c# - 脚手架-DbContext 到不同的输出文件夹

C# 9.0 记录 - 不可为空的引用类型和构造函数

opencv - RGB颜色直方图的特征维度?

cocoa - 如何将灰度图像转换为RGB图像?

javascript - 如何在 JavaScript 中编写 RGB 颜色值?

c# - 使用正则表达式从字符串中提取坐标的更好方法

c# - 无需 OAUTH 将视频上传到 Youtube