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

问题描述 投票:0回答:1

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

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

1)制作画布,从不调用绘图函数,将其转换为位图,然后打印(与使用Canvas API的预期方式有些偏离)

2)创建一个隐藏的ImageView xml布局,从不使其可见,将其转换为位图然后打印(这可能会很棘手,因为我可能必须将其包含在Activity的布局中才能进行动态编辑,但这会消耗很多资源和感觉效率低下)

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

android image imageview android-canvas dynamic-image-generation
1个回答
0
投票

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

首先,您应该创建所需尺寸的位图,并将其传递给Canvas(Bitmap)构造函数。然后,您可以在画布上绘制所需的任何内容,并保留对位图的引用,以在整个应用程序中所需的地方使用(在我的情况下,该位图将被发送到打印机)。

来自Android Docs对于视图层次结构或单个视图的一小部分的软件渲染快照,建议从位图或图片创建画布并在视图上调用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的引用,可以在需要的地方使用它

© www.soinside.com 2019 - 2024. All rights reserved.