Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何将对应于RGB的3个字节转换为单个字节?_Vb.net_Assembly - Fatal编程技术网

Vb.net 如何将对应于RGB的3个字节转换为单个字节?

Vb.net 如何将对应于RGB的3个字节转换为单个字节?,vb.net,assembly,Vb.net,Assembly,我正在制作一个16位汇编程序,我正在使用的图形模式只支持在单个字节中写入的每像素256色。换句话说,我只能指定一个字节的颜色值来绘制像素。我将图像转换为8位深度位图,现在我尝试使用Visual Basic获取每个像素颜色值,以便在汇编程序中使用这些值,但我得到的是RGB值,当我尝试将这些RGB值转换为单个字节时,我得到的数字大于256,因此无法在图形模式下使用。以下是我所拥有的: Dim myBitmap As New Bitmap("images.bmp") Dim output As New

我正在制作一个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()
Dim myBitmap作为新位图(“images.bmp”)
将输出变暗为新System.IO.StreamWriter(“colors.txt”,False)
暗像素颜色作为颜色
将rgb设置为整数
对于myBitmap.Width-1步骤1,x为整数=1
pixelColor=myBitmap.GetPixel(x,y)

rgb=CUInt(pixelColor.B)+CUInt((pixelColor.G使用3位表示红色值,3位表示绿色,2位表示蓝色。Wikipedia页面上对此进行了详细解释

转换逻辑是:

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

[(Red/32)这么快的回答让我看起来很糟糕。我花了好几个小时在这个问题上,就是这样做的。呵呵。谢谢。)
rgb = ((pixelColor.R / 32) << 5) + ((pixelColor.G / 32) << 2) + (pixelColor.B / 64)
[(Red / 32) << 5] + [(Green / 32) << 2] + (Blue / 64)