最近做的关于打印机打印图片的项目,需要将图片转为打印机能打的点阵位图。我参考了很多文章,但是也没有说的很详细的,其中流浪的鱼的csdn博客写的比较详细,但是,半路出家的Android菜鸟,表示没看太懂,而且那个BufferImage,Android里也没有,又下了个GpuImage处理库,发现效果都不是我想要的,于是,自己看了抖动算法原理,自己写了个。首先,打印机只能通过你传输的数据0或1,来执行打还是不打,打,只能打黑点。所以,传过去的图像像素需要进行判断,到底是打黑点还是不打。
处理方法,先将图片转为灰度图,这个就不说了,方法一大把,你可以自己套用灰度图的算法公式;得到图像的像素数组
int width = img.getWidth(); //获取位图的宽
int height = img.getHeight(); //获取位图的高
int[] pixels = new int[width * height]; //通过位图的大小创建像素点数组
img.getPixels(pixels, 0, width, 0, 0, width, height);
再套公式:int gray = (int)(0.299 * (double