gpt4 book ai didi

vb.net - 如何将RGB对应的3个字节变成一个字节?

转载 作者:行者123 更新时间:2023-12-02 06:45:07 25 4
gpt4 key购买 nike

我正在制作一个 16 位汇编程序,并且我正在工作的图形模式仅支持以单个字节写入的每个像素 256 种颜色。换句话说,我只能指定一个字节的颜色值来绘制一个像素。我将图像转换为 8 位深度位图,现在我尝试使用 Visual Basic 获取每个像素颜色值,以便我可以在汇编程序中使用这些值,但我得到一个 RGB 值,当我尝试转换这些 RGB 时将值转换为单个字节时,我得到的数字大于 256,因此我无法在图形模式下使用它。这是我所拥有的:

Dim myBitmap As New Bitmap("images.bmp")
Dim output As New System.IO.StreamWriter("colors.txt", False)
Dim pixelColor As Color
Dim rgb As Integer

For x As Integer = 1 To myBitmap.Width - 1 Step 1
pixelColor = myBitmap.GetPixel(x, y)
rgb = CUInt(pixelColor.B) + CUInt((pixelColor.G << 8)) + CUInt((pixelColor.R << 16))
output.WriteLine(rgb.ToString)

Next x

Next y
output.Close()

实际上给我的值高于 256 的行是:

rgb = CUInt(pixelColor.B) + CUInt((pixelColor.G << 8)) + CUInt((pixelColor.R << 16))

实际上有什么方法可以将 3 个 RGB 值转换、合并或近似为一个字节吗? (不能超过255)

<小时/><小时/>

编辑:既然我们已经进入了 VB 网络,让我用转换逻辑来编写工作代码行David 写道:

rgb = ((pixelColor.R / 32) << 5) + ((pixelColor.G / 32) << 2) + (pixelColor.B / 64)

谢谢大卫。

最佳答案

使用 3 位表示红色值,使用 3 位表示绿色值,使用 2 位表示蓝色值。维基百科页面上对8-bit color有很好的解释。 .

转换逻辑为:

[(Red / 32) << 5] + [(Green / 32) << 2] + (Blue / 64)

关于vb.net - 如何将RGB对应的3个字节变成一个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12222992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com