Как добавить обводку / границу к прозрачному изображению PNG в Android? - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть прозрачные изображения, такие как фигуры, буквы, которые я получаю из галереи, поэтому мне нужно придать им обводку / контур черным цветом, я могу установить границу, но она настроена на целое растровое изображение, как слева, справа, сверху и снизу.

То же самое, что мы можем сделать с фотошопом, это сделать внешний штрих к изображению, но я хочу добиться этого в Android.

Я пробовал это и это Это дает границы, но то, что я хочу сделать, это как показано ниже примерное изображение

Исходное изображение without stroke

Хочу вот так -> With stroke

Возможно ли это в Android?

1 Ответ

0 голосов
/ 25 апреля 2019

У меня есть временное решение, подобное этому

int strokeWidth = 8;
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.flower_icon);
Bitmap newStrokedBitmap = Bitmap.createBitmap(originalBitmap.getWidth() + 2 * strokeWidth, originalBitmap.getHeight() + 2 * strokeWidth, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(newStrokedBitmap);
float scaleX = (originalBitmap.getWidth() + 2.0f * strokeWidth) / originalBitmap.getWidth();
float scaleY = (originalBitmap.getHeight() + 2.0f * strokeWidth) / originalBitmap.getHeight();
Matrix matrix = new Matrix();
matrix.setScale(scaleX, scaleY);
canvas.drawBitmap(originalBitmap, matrix, null);
canvas.drawColor(Color.WHITE, PorterDuff.Mode.SRC_ATOP); //Color.WHITE is stroke color
canvas.drawBitmap(originalBitmap, strokeWidth, strokeWidth, null);

Сначала создайте новое растровое изображение с размером обводки слева, справа, снизу и сверху.

Во-вторых, немного растровое растровое изображение и рисование растрового растрового изображения на только что созданном растровом холсте.

Нарисуйте цвет (ваш цвет обводки) с помощью PorterDuff mode SRC_ATOP переопределить исходное положение растрового изображения цветом обводки.

Наконец, нарисуйте исходное растровое изображение на вновь созданном растровом холсте.

...