【发布时间】:2012-03-01 06:35:24
【问题描述】:
我正在编写一个类,用于通过 Mono For Android 将位图打印到 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];
}
我的问题是:
当我使用字节数组时,如何垂直翻转图像。我很难找到执行此操作的算法,所有示例似乎都建议使用我无法使用的已建立的图形库。
编辑:
我的位图保存在一个一维数组中,第一行字节,然后是第二行,第三行,等等。
【问题讨论】:
-
您是否正在寻找一种算法来交换矩阵中的数字、图像的像素,从而使图像旋转?
flip是什么意思 -
@Adrian 是的,我需要修改数组,以便图像以正确的方向打印。我正在寻找可以在 Photoshop 或其他绘图程序中执行“垂直翻转”命令的算法。
-
格式是否使位数组包含
width*height*bits_per_pixel位?如果是这样,它是否以[first_row|second_row|...]的形式组织? -
@DanielFischer 是的,位数组包含第一行,然后是第二行等。它将始终采用每像素 1 位的格式。
-
@dmck,你有没有机会分享一下你是如何做到这一点的?更具体地说,将像素设置为适合打印机的格式?我真的被困在那里了。
标签: c# android algorithm image-processing xamarin.android