以比设备更高的分辨率保存画布输出图像

时间:2015-07-30 06:03:55

标签: android image canvas high-resolution

是否可以将画布保存为比设备更高分辨率的图像?是否有某种方法可以在不丢失像素密度的情况下缩放图像? 我正在制作一个应用程序,让您绘制并在画布上添加文本和图像。目前,当我将画布保存为图像时,该图像的分辨率取决于设备。我希望它独立于设备,并且图像应该以非常高的分辨率保存(例如A3 300dpi)。

2 个答案:

答案 0 :(得分:2)

无法将画布保存为高分辨率图像。图像分辨率表示形成图像的像素数。在画布案例中,画布大小将是目标图像的分辨率。 一种可能的方法来实现这个目标

  • 将所有用户绘制的元素存储为对象
  • 使用目标分辨率
  • 创建空白图像
  • 使用Canvas c = new Canvas(image)
  • 获取目标图像的画布
  • 根据设备画布大小和新画布大小计算比例因子
  • 现在使用计算出的比例因子
  • 缩放所有用户绘制的对象
  • 在较大的画布上重绘所有对象并导出图像

一旦用户点击UI中的导出/保存按钮

,就可以执行上述逻辑

答案 1 :(得分:1)

您不能独立于设备。因为每个设备上允许的最大大小不同。

查看getMaximumBitmapWidth()

getMaximumBitmapHeight()Canvas

但是你可以用Canvas绘制Bitmaps。但这已被多次回答。例如这里: https://stackoverflow.com/a/5664047/5038873

解决问题的方法可能是在子图像中平铺目标分辨率,受最大画布大小的限制。然后用画布画出那些图像。

在接下来的步骤中,您可以将这些位图放在一起,方法是创建一个包含目标分辨率的位图,并将其他图像的像素复制到其中。