我正在開發圖像處理,並且我想使用seekbar應用模糊效果。 我使用下面的代碼模糊的位圖和它的作品,但現在我想要去模糊的位圖,我無法實現...... PLZ幫我解決這個問題如何在seekbar變化上使位圖變模糊和刪除
private Bitmap blurfast(Bitmap bmp, int radius) {
int w = bmp.getWidth();
int h = bmp.getHeight();
int[] pix = new int[w * h];
bmp.getPixels(pix, 0, w, 0, 0, w, h);
for(int r = radius; r >= 1; r /= 2)
{
for(int i = r; i < h - r; i++)
{
for(int j = r; j < w - r; j++)
{
int tl = pix[(i - r) * w + j - r];
int tr = pix[(i - r) * w + j + r];
int tc = pix[(i - r) * w + j];
int bl = pix[(i + r) * w + j - r];
int br = pix[(i + r) * w + j + r];
int bc = pix[(i + r) * w + j];
int cl = pix[i * w + j - r];
int cr = pix[i * w + j + r];
pix[(i * w) + j] = 0xFF000000 |
(((tl & 0xFF) + (tr & 0xFF) + (tc & 0xFF) + (bl & 0xFF) +
(br & 0xFF) + (bc & 0xFF) + (cl & 0xFF) + (cr & 0xFF)) >> 3) & 0xFF |
(((tl & 0xFF00) + (tr & 0xFF00) + (tc & 0xFF00) + (bl & 0xFF00)
+ (br & 0xFF00) + (bc & 0xFF00) + (cl & 0xFF00) + (cr & 0xFF00)) >> 3) & 0xFF00 |
(((tl & 0xFF0000) + (tr & 0xFF0000) + (tc & 0xFF0000) +
(bl & 0xFF0000) + (br & 0xFF0000) + (bc & 0xFF0000) + (cl & 0xFF0000) +
(cr & 0xFF0000)) >> 3) & 0xFF0000;
}
}
}
bmp.setPixels(pix, 0, w, 0, 0, w, h);
return bmp;
}
一旦圖像模糊,就不能「模糊」圖像。您可以實現的唯一方法是保留原件的副本並在必要時進行恢復。 –
感謝您的回放,但我需要這樣做,是處理模糊效果的任何單一解決方案..? –
我不認爲這是可能的,因爲模糊實際上改變了像素值,然後你會丟失圖像的一些數據,所以即使你顛倒了算法,你也不會回到原始圖像,所以你必須保存原始圖像之前修改它。 –