Я знаю, что это в основном вопрос с изображением, а не код, но здесь я сделаю снимок.
Итак, сначала у меня есть изображение в градациях серого 8 бит / пиксель (растровое изображение). Это означает, что каждый пиксель представлен в 1 байте. Это означает, что значение пикселя является байтовым значением. Достаточно ясно.
Но тогда ...
У меня есть изображение в градациях серого 16 бит / пиксель (растровое изображение). Это означает, что каждый пиксель представлен в 2 байта. Это ясно для меня. Теперь я создаю массив byte [], который будет содержать каждое значение байта.
Для изображения 1024x1024 у меня будет 2097152 байта. Это 1024 *1024* 2.
Мой вопрос сейчас, как мне получить значение пикселя для определенного c пикселя.
Скажем, для пикселя в позиции (X | Y) байты составляют 84 и 77. Как преобразовать эти 2 значения в значение пикселя.
Во-первых, мне это нужно для некоторых вычислений, где Мне нужно значение в пикселях, затем я хочу изменить цветовую палитру растрового изображения, и оно отлично работает с 8-битными пиксельными изображениями, но не с 16-битными пиксельными изображениями.
Любая помощь будет полезной.
var width = bitmap.PixelWidth;
var height = bitmap.PixelHeight;
var dpiX = bitmap.DpiX;
var dpiY = bitmap.DpiY;
byte[] pixels = new byte[
bitmap.PixelHeight * bitmap.PixelWidth *
bitmap.Format.BitsPerPixel / 8];
bitmap.CopyPixels(pixels, bitmap.PixelWidth * bitmap.Format.BitsPerPixel / 8, 0);
Так я создаю массив пикселей.