我刚刚编写了一些代码来抓取图像,将其像素存储到数组中并再次显示每个像素,以便最终显示抓取的图像。
我拍了下面的照片:
我选择使用32x32 png图像作为示例。
这是我的输出:
正如您可能看到的,结果的像素远远多于32x32。
以下是我的代码的外观:
首先,创建一个应该获取图像所有像素信息的数组:
private Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.test);
private int w = b.getWidth;
private int h = b.getHeight;
private int pixels = w*h;
然后我使用一种方法将位图的像素存储到数组中:
b.getPixels(pixels, 0, w, 0, 0, w, h);
我认为应该是它,现在我可以将像素绘制到我的视图中:
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint p = new Paint();
for(int i = 0; i < w; i++) {
for(int j = 0; j < h; j++) {
p.setColor(Color.parseColor(String.format("#%06X", (0xFFFFFF & pixelImage.pixels[i+i*j]))));
canvas.drawRect(i, j, i+1, j+1, paint);
}
}
}
我不知道我的错误在哪里,也许有人可以帮助我?
答案 0 :(得分:0)
你的算法错了,经常有点重要。 String.format没有理由进入它,我甚至不确定你去哪里。并且drawRect不是这样做的方式。尝试:
for(int i = 0; i < w; i++) {
for(int j = 0; j < h; j++) {
p.setColor(pixels[i*bmp.getWidth()+j]);
canvas.drawPoint(j, i, paint);
}
}