Я прочитал эту ссылку Converting 8 bit color into RGB valueVB.NET CONVERT BYTE NUMBER 8 бит (256 цветов) RGB VALUE
Затем я попробовал код VB.NET, как в следующем:
Private Sub picturebox1_MouseDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles picturebox1.MouseDown
Dim bm As New Bitmap(picturebox1.Image)
Dim Red As Byte = bm.GetPixel(e.X, e.Y).R
Dim Green As Byte = bm.GetPixel(e.X, e.Y).G
Dim Blue As Byte = bm.GetPixel(e.X, e.Y).B
Dim ColorNumber As Byte = ((Red/32) << 5) + ((Green/32) << 2) + (Blue/64)
' Show Byte Number of color
MsgBox(ColorNumber)
MsgBox(Red & ":" & Green & ":" & Blue)
Red = (ColorNumber >> 5) * 32
Green = ((ColorNumber >> 2) << 3) * 32
Blue = (ColorNumber << 6) * 64
MsgBox(Red & ":" & Green & ":" & Blue)
End Sub
Но когда один пиксель , возникает ошибка:
Арифметическая операция привела к переполнению.
Как получить значение байта изображения с 256 цветами (8 бит), а затем восстановить (преобразование) итоговое значение байта в значение RGB.
спасибо :)
У вас есть более 8 бит цвета. – SLaks
256 цветных изображений обычно хранятся с использованием палитры. Другими словами, 8-битное значение цвета не является комбинацией RGB, а просто индексом палитры для поиска реального RGB. Одних 8 бит недостаточно для хранения RGB. Это позволило бы только 2 бита на цвет, чего было бы недостаточно. Значение acutal RGB, сохраненное в палитре, будет больше 8 бит. –
@SLaks Я использую изображения с 256-цветным BMP-форматом. Я редактирую, используя краску microsoft. –