2015-03-24 1 views
1

MSDN документация, кажется, противоречит себе:Являются ли растровые изображения 2-байтовыми или 4-байтовыми?

Here он говорит:

Для несжатых форматов RGB, минимальный шаг всегда ширина изображения в байтах, округленный до ближайшего DWORD.

Хотя here он говорит:

Количество байтов в каждой строке развертки. Это значение должно быть делимым на 2, так как система предполагает, что битовые значения битового массива образуют массив, выравниваемый по слову.

Так что иногда MSDN хочет выровнять по 4 байта шага, а иногда ему нужен 2-байтовый выровненный шаг. Какой правильный?

Чтобы быть более конкретным, при сохранении растрового файла следует использовать 4-байтовый шаг или 2-байтный шаг?

+0

С первого звена ' Для форматов YUV нет общего правила для вычисления минимального шага ', поэтому, по-видимому, существует хотя бы один формат YUV, который имеет выравнивание по двум байтам. –

+0

Из вашей второй ссылки ясно, что страница в основном описывает * монохромные * растровые изображения. Должно быть, это довольно старая страница. – usr2564301

ответ

4

Первая цитата точна. Второе относится к 16-разрядной версии Windows и не редактировалось, как должно быть. Не совсем необычно, в документах GDI32 было много ошибок.

Обратите внимание, что голосовой ответ не является точным. Монохромные растровые изображения до сих пор походку это кратно 4, не существует специальное правило, что делает его 2. бит кода .NET, чтобы продемонстрировать это:

var bmp = new Bitmap(1, 1, System.Drawing.Imaging.PixelFormat.Format1bppIndexed); 
var bdata = bmp.LockBits(new Rectangle(0, 0, 1, 1), System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat); 
Console.WriteLine(bdata.Stride); 

Выходной: 4

1

Для несжатых RGB форматов, минимальный шаг всегда ширина изображения в байтах, округленный до ближайшего DWORD.

Растровые изображения не обязательно всегда несжатые RGB, они могут быть монохромными. В структуре BITMAP член bmBitsPixel определяет количество бит на пиксель, поэтому для него оно равно 1. Таким образом, вы должны сохранить растровые изображения RGB с шагом байта, который кратен 4, и сохранить монохромное растровое изображение с шаг, кратный 2.

Смежные вопросы