저는 16 비트 어셈블리 프로그램을 만들고 있고, 작동중인 그래픽 모드는 1 바이트로 작성된 픽셀 당 256 색만 지원합니다. 즉, 픽셀을 그리는 데 1 바이트 색상 값만 지정할 수 있습니다. 이미지를 8 비트 심도의 비트 맵으로 변환 했으므로 Visual Basic에서 각 픽셀 색 값을 가져 와서 어셈블리 프로그램에서이 값을 사용할 수있게되었지만 RGB 값을 얻었고 RGB를 변환하려고 시도했습니다. 값을 1 바이트로 변환합니다. 256보다 큰 숫자를 얻으므로 그래픽 모드에서는 사용할 수 없습니다.어떻게하면 RGB에 해당하는 3 바이트를 단일 바이트로 만들 수 있습니까?
이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 값에 근접 할 수있는 방법이 있나요 여기에 내가 무엇을 가지고 1 바이트? (초과 할 수 없습니다 255)
편집 : 우리가 이미 VB 순 물건에있는 나를 데이비드 쓴 변환 로직과 코드의 작업 라인을 쓸 수 있기 때문에 :
rgb = ((pixelColor.R/32) << 5) + ((pixelColor.G/32) << 2) + (pixelColor.B/64)
감사합니다. David.
이러한 신속한 답변이 나를 나쁘게 보이게한다. 이것에 시간이 흘렀고 그것이 어떻게 이루어 졌는지입니다. Hehe. 감사. :) – NorthStyling