Как читать Endian-независимо System.Drawing.Bitmap? - PullRequest
0 голосов
/ 15 марта 2019

Я наткнулся на ответ Ханса Пассанта , в котором говорится, что нужно привести BitmapData.Scan0 к соответствующему примитивному типу указателя (int* в случае этого вопроса PixelFormat.Format32bppArgb). Это сбивает меня с толку, поскольку предполагает, что данные System.Drawing.Bitmap зависят от порядка байтов, то есть в какой-то момент GDI или .NET [Framework / Core] преобразует данные изображения, которые он читает, в машинный порядок байтов.

Это также не имеет особого смысла в контексте форматов пикселей, которые не соответствуют примитивному типу, например Format24bppRgb. Как может 24-битный блок данных быть зависимым от порядка байтов?

Здравый смысл велел мне читать отдельные байты в указанном порядке (то есть синий, затем зеленый, затем красный, затем альфа). Однако я получаю смешанные сигналы здесь.

...