android - 在ANDROID编程中从位图图像复制位矩阵

标签 android matrix bitmap

我正在开发一个 android 应用程序,它可以帮助用户通过素描或绘图来复制位图的一部分。我的意思是用户将在以位图为背景的 Canvas 上绘制一些形状,然后我将点着色为位图(位矩阵/二维位数组)。直到这里,每一次击打听起来都不错。

现在的问题是如何复制矩阵中对应真实位的图像部分?

补充说明

1) 主图:

Image be fore any process

2) 图片作为 Canvas 背景:

Image as canvas background

3) Canvas 上的一些画作:

User paints on canvas

4) 绘制区域的位矩阵表示:

Bit matrix

5) 预期输出:

Where is painted is outputted

最佳答案

你可以这样做。该示例使用一个 Bitmap 作为源,另一个 Bitmap 作为过滤矩阵。过滤位图具有透明背景,过滤位图也是如此:

public Bitmap doFilter(Bitmap source, Bitmap filter) {
    Bitmap filtered = Bitmap.createBitmap(source.getWidth(), source.getHeight(), source.getConfig());

    Paint paint = new Paint();
    Canvas canvas = new Canvas(filtered);

    canvas.drawBitmap(source, 0, 0, paint);
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
    canvas.drawBitmap(filter, 0, 0, paint);

    return filtered;
}

例如,使用此来源:

enter image description here

还有这个过滤器:

enter image description here

你会得到这个过滤后的图像:

enter image description here

关于android - 在ANDROID编程中从位图图像复制位矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38181230/

相关文章:

android映射覆盖项目的异步加载

android - 如何确保为每个设备创建一个房间,而不是每次启动应用程序时创建一个新实例

R 使用行和列的公式创建矩阵

dll - 如何在 F# 源文件 (fs) 中引用 system.drawing。它适用于脚本文件 (fsx)

c++ - Allegro 5如何隐藏/卸载位图

android - 如何引用阶段?使用 flex 进行 Facebook actionscript 移动 API 登录方法

java - Picasso 将位图或字节 [] 加载到 ImageView

c - 如何通过在C中填充零来使矩阵平方

c++ - 创建一个表示2D矩阵中所有可能路径的图形

java - 如何在 Android 中旋转位图?