Если вы хотите размыть какую-то часть изображения, вам нужно вырезать эту часть, прежде чем подавать ее в ваш алгоритм размытия.
Вы можете получить Canvas
из bitmap
, как это. bitmap
должно быть mutable
.
Canvas canvas = new Canvas(bitmap name);
Чтобы вырезать часть bitmap
, нам нужен Rect
для указания подмножества, в котором мы заинтересованы, назовем его srcRect
. Нам нужен еще один Rect
, в котором наше оригинальное растровое изображение будет масштабировано, чтобы соответствовать, давайте назовем это destRect
.
Объявите размеры вашего растрового растрового изображения
int blurBitmapWidth = 50;
int blurBitmapHeight = 50;
Объявите свои прямоугольники
Bitmap original = decode form resources....
Rect srcRect = new Rect(0, original.getHeight() - blurBitmapHeight, blurBitmapWidth, original.getHeight()); // bottom left portion
Rect destRect = new Rect(0, 0, blurBitmapWidth, blurBitmapHeight);
Bitmap croppedBitmap = cutBitmap(original, srcRect, destRect);
Метод CutBitmap
private Bitmap cutBitmap(final Bitmap originalBmp, Rect src, Rect dest) {
Bitmap croppedBitmap = Bitmap.createBitmap(dest.width(), dest.height(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(croppedBitmap);
canvas.drawBitmap(originalBmp, src, dest, null);
return croppedBitmap;
}
Теперь croppedBitmap
содержит нижнюю левую часть вашего original
. Подайте его в свой алгоритм размытия.
Далее, если вы хотитенарисуйте размытую часть на original
, затем вы просто получите canvas
на original bitmap
и нарисуете blurred bitmap
, используя srcRect
.
Canvas c = new Canvas(original);
c.drawBitmap(bitmap obtained from blur algorithm, srcRect.left, srcRect.top, null);