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