java - 如何在android中为透明png图像添加描边/边框?

标签 java android bitmap png android-canvas

我有透明图像,如形状、字母,我是从图库中获取的,所以我需要用黑色给它们描边/轮廓,我可以设置边框,但它被设置为整个位图,如左、右、上和下。

Same thing we can do with photoshop is giving outerstroke to image but I want to achieve that in android.

我试过了 thisthis它给边界,但我想做的是像下面 示例图片

原始图片 without stroke

我想要这样 --> With stroke

这在安卓中可行吗?

最佳答案

我有这样的临时解决方案

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 = newStrokedBitmap.getWidth() / originalBitmap.getWidth();
float scaleY = newStrokedBitmap.getHeight() / 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);

首先创建一个新的位图,在左、右、下和上设置笔画大小。

其次,稍微缩放位图并在新创建的位图 Canvas 上绘制缩放位图。

使用 PorterDuff 模式绘制颜色(您的描边颜色)SRC_ATOP 用描边颜色覆盖原始位图位置。

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

关于java - 如何在android中为透明png图像添加描边/边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53406813/

相关文章:

java - java DOM 解析器异常

java - Intent 不可序列化

java - Android 中的 AsyncTask 循环

java - 如何快速地将位图从一个 Activity 传递到另一个 Activity ?

c# - 如何检查两个图像是否相同

Java keyListener 不适用于 BasicConstruct

java - 使用 TCP 连接的 Spring 方式是什么?

java - 本地主机上的 NotBoundException

android - 如何将 Twitter 集成到我的应用程序中以进行登录和发推 - Android

c# - 您如何验证2d位图是连续的?