Каков шаг для 256-цветного (8-битного) растрового изображения?

Здесь и в других местах есть много вопросов (и ответов) о вычислении шага. У меня есть растровые изображения, которые мне нужно прочитать в памяти. Все отлично работает, IFF они 16,5 млн цветов (24 бита). Однако мне нужно, чтобы они были только 256 цветов (8 бит), и когда я пытался загрузить точное изображение, но с меньшей глубиной цвета, оно взрывалось. Я мог бы просто жить с этим; за исключением того, что, очевидно, 256-цветное изображение намного меньше, чем 16,5-миллионное изображение.

Итак, каков шаг для 256-цветного изображения в оттенках серого (8 бит)?


person zetar    schedule 24.05.2013    source источник


Ответы (3)


Для 8-битного изображения шаг будет просто шириной в пикселях. Это округляется до следующего числа, кратного 4. Например, если изображение имеет ширину 198 пикселей, шаг будет равен 200.

person Fuzhou Hu    schedule 24.05.2013

Шаг 8-битного изображения равен ширине изображения.

Шаг будет зависеть от используемого цветового формата. Чтобы получить значение шага, вы умножаете количество байтов, используемых пикселем, на ширину изображения.

person ppetrov    schedule 24.05.2013
comment
Эм, это просто неправильно. Шаг нельзя считать шириной изображения. - person Nyerguds; 07.01.2018

На самом деле нет ничего определяющего, каким должен быть шаг. Как правило, как уже говорилось, это ширина, округленная до следующего кратного четырем, но на самом деле нет ничего, что навязывало бы это в качестве стандарта.

Единственный способ быть полностью уверенным — просто запросить его с изображения. Не было предоставлено никакой информации о том, как вы получаете доступ к данным изображения, но стандартный способ сделать это — создать объект Bitmap вашего изображения и использовать функцию bitmap.LockBits для получения объекта BitmapData. В этом случае Stride — это просто свойство этого объекта BitmapData.

Если у вас каким-то образом уже есть фактические данные изображения в виде массива байтов, вы, конечно, можете просто разделить их на высоту.

person Nyerguds    schedule 07.01.2018