Я пишу класс для печати растровых изображений на портативный принтер Bluetooth в Android через Mono For Android. Мой класс используется для получения пиксельных данных из потока, чтобы их можно было отправлять на принтер в правильном формате. Прямо сейчас класс прост, он просто читает высоту, ширину и биты на пиксель.
Используя смещение, он считывает и возвращает данные пикселей в принтер. Сейчас я работаю с черно-белыми изображениями на 1 бит на пиксель. Растровые изображения, с которыми я работаю, имеют формат Windows.
Вот оригинальное изображение:
Вот результат печати, первое изображение без каких-либо преобразований. И второй результат является результатом изменения BitArray с помощью следующего кода:
BitArray bits = new BitArray(returnBytes);
BitArray flippedBits = new BitArray(bits);
for (int i = 0, j = bits.Length - 1; i < bits.Length; i++, j--)
{
flippedBits[i] = bits[j];
}
Мой вопрос:
Как перевернуть изображение по вертикали, когда я работаю с байтовым массивом. У меня проблемы с поиском алгоритма для этого, все примеры, кажется, предлагают использовать установленные графические библиотеки, которые я не могу использовать.
Edit:
Мое растровое изображение сохраняется в одномерном массиве с байтами первых строк, затем вторым, третьим и т. Д.