大家好,
在我注意到 getPixel
和 setPixel
的速度有多慢后(不确定哪一个,猜测两者都没有进行优化),我很快编写了一个使用 int[]
数组来处理位图操作的 Bitmap
容器。
已经可以明显感觉到它更快了,但这还不够。请问如何进一步加速呢?
我的想法是通过 setPixel
函数跟踪被“污染”的部分,并在调用 getBitmap()
时只更新这部分的 Bitmap
... 不过对于如何设置 setPixels
参数还不清楚(我猜大概涉及到偏移和跨度等)。
还有 - 是否有更快的方法呢?
提前感谢所有的帮助!
import android.graphics.Bitmap;
public class DrawableBitmapContainer {
private Bitmap image;
private int width, height;
private int[] pixels;
public DrawableBitmapContainer(Bitmap _source ){
image = _source;
width = image.getWidth();
height = image.getHeight();
pixels = new int[width*height];
image.getPixels(pixels,0,width,0,0,width,height);
}
public int getPixel(int x,int y){
return pixels[x+y*width];
}
public void setPixel(int x,int y, int color){
pixels[x+y*width]=color;
}
public Bitmap getBimap(){
image.setPixels(pixels,0,width,0,0,width,height);
return image;
}
public int getWidth(){
return image.getWidth();
}
public int getHeight(){
return image.getHeight();
}
}