有没有快速的方法来清除android中位图的某些像素?

时间:2014-12-16 22:32:08

标签: android bitmap

在我的Android应用程序中,我进行图像处理。其中一个步骤,我需要快速设置图像的某些像素完全透明。

我这样做的方法是从图像中心运行BFS算法,并创建应该保留的像素坐标的稀疏阵列。然后我做一个双循环并迭代整个位图,并设置像素透明,如果它们不在稀疏数组中。

有更快的方法吗?可能是这样的(伪代码):

bitmap.setpixelstatic(x, y);
bitmap.setpixelstatic(x+1, y);
...

bitmap.setColorofNonstaticpixel(Color.Transparent);

由于

1 个答案:

答案 0 :(得分:0)

我认为你可以从对算法做出安排开始。最好使用稀疏矩阵来检测应该保留的像素的坐标,但不是确定不会改变的坐标,而是必须确定要改变的坐标,这样你才能访问所需的像素,而不是方形循环。就像这样:

你的方式;

for i 1 to width
    for j 1 to height
        if pixel at [i, j] going to remain than
            sparse.push(i, j)
for i 1 to width
    for j 1 to height
        if [i, j] not in sparse than modify

您改进了算法;

for i 1 to width
    for j 1 to height
        if pixel at [i, j] NOT GOING TO REMAIN than
            sparse.push(i, j)
for each pixelCoordinates in sparse
    modify pixel at [pixelCoordinates.i, pixelCoordinates.j]

我希望这有帮助。