在我的Android应用程序中,我进行图像处理。其中一个步骤,我需要快速设置图像的某些像素完全透明。
我这样做的方法是从图像中心运行BFS算法,并创建应该保留的像素坐标的稀疏阵列。然后我做一个双循环并迭代整个位图,并设置像素透明,如果它们不在稀疏数组中。
有更快的方法吗?可能是这样的(伪代码):
bitmap.setpixelstatic(x, y);
bitmap.setpixelstatic(x+1, y);
...
bitmap.setColorofNonstaticpixel(Color.Transparent);
由于
答案 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]
我希望这有帮助。