如何在Android中为透明的png图像添加笔触/边框?

时间:2018-11-21 07:02:54

标签: java android bitmap png android-canvas

我有透明的图像,例如形状,字母,这些图像是我从图库中获取的,因此我需要给它们使用黑色的笔触/轮廓线,我可以设置边框,但是将其设置为整个位图,如左,右,顶部和底部。

  

我们可以用photoshop做的事情是给图像加笔画,但我想在android中实现。

我尝试了thisthis的边界,但是我想做的如下 样本图片

原始图片 without stroke

我想要这样-> With stroke

在Android中这可能吗?

1 个答案:

答案 0 :(得分:0)

我有这样的临时解决方案

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 模式 SRC_ATOP 绘制颜色(您的笔触颜色),以笔触颜色覆盖原始位图位置。

最后在新创建的位图画布上绘制原始位图。