Android:以编程方式制作图像并将其保存到位图的最佳方式?

Android: Best Way to Programmatically Make an Image and Save it to a Bitmap?

我有一个连接到外部打印机设备的应用程序,我需要获取一些用户数据并动态制作图像并进行打印。打印机 API 需要位图作为打印输入。请注意,我从不想将以编程方式创建的图像绘制到屏幕上;图像的生成和打印不可见UI,它发生在后台。

到目前为止,我考虑过使用以下方法之一:

1) 制作一个 canvas,从不调用绘图函数,将其转换为位图然后打印(有点偏离使用 Canvas [=22= 的预期方式])

2) 制作一个隐藏的 ImageView xml 布局,永远不要让它可见,将其转换为位图然后打印(这可能会变得棘手,因为我可能必须将它包含在 Activity的布局在某处可以动态编辑它,但是会消耗资源并且感觉效率低下)

您对最佳方法有何看法?我考虑过的两种方式中的任何一种都感觉有点老套,让我渴望使用专门的 API 来生成自定义图像。

最符合平台的解决方案是采用 Canvas 方法。

首先,您应该创建所需尺寸的位图并将其传递给 Canvas(Bitmap) 构造函数。然后你在你的 canvas 上绘制你需要的任何东西并保留对位图的引用以在你整个应用程序中任何你需要的地方使用(在我的例子中它被发送到打印机)。

来自 Android Docs对于视图层次结构的一小部分或单个视图的软件渲染快照,建议从位图或图片创建 Canvas 并调用 draw(android.graphics.Canvas)查看.

示例代码:

bitmap = Bitmap.createBitmap(LABEL_SIDE_LENGTH, LABEL_SIDE_LENGTH, Bitmap.Config.ARGB_8888)

下一步 [在 override fun draw(canvas: Canvas)] 中设置 Canvas' 位图;

canvas.setBitmap(bitmap).

您保留对 bitmap 的引用,它可以在您需要的任何地方使用