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

Android 以比设备更高的分辨率保存画布输出图像,android,image,canvas,high-resolution,Android,Image,Canvas,High Resolution,是否可以以比设备更高的分辨率将画布另存为图像?有没有办法在不丢失像素密度的情况下放大图像? 我正在开发一个应用程序,让你在画布上绘制和添加文本和图像。当前,当我将画布保存为图像时,该图像的分辨率取决于设备。我希望它独立于设备,并且图像应以非常高的分辨率保存(例如A3 300dpi)。您不能独立于设备。因为每个设备上允许的最大大小不同 查看画布的getMaximumBitmapWidth()和getMaximumBitmapHeight() 但您可以使用画布绘制位图。但这个问题已经得到了多次回答。

是否可以以比设备更高的分辨率将画布另存为图像?有没有办法在不丢失像素密度的情况下放大图像?

我正在开发一个应用程序,让你在画布上绘制和添加文本和图像。当前,当我将画布保存为图像时,该图像的分辨率取决于设备。我希望它独立于设备,并且图像应以非常高的分辨率保存(例如A3 300dpi)。

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

查看
画布的
getMaximumBitmapWidth()
getMaximumBitmapHeight()

但您可以使用画布绘制位图。但这个问题已经得到了多次回答。例如:

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


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

无法将画布保存为高分辨率图像。图像分辨率指形成图像的像素数。在画布情况下,画布大小将是目标图像的分辨率。 实现这一目标的一种可能方法

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

用户从UI单击导出/保存按钮后,即可执行上述逻辑(谢谢:)。有没有可能从android设备上以300 dpi的速度保存图像?我想我看到的最大速度是Nexus 6和Galaxy S6上的16384x16384px。但我不是100%确定。Nexus 6和s6都有2560 x 1440像素的分辨率显示分辨率,但getMaximumBitmapWidth()返回其他值。最大画布大小不取决于屏幕大小。我添加了一些更多的信息,可以帮助您实现您想要的。在不降低任何质量的情况下。是的,在设备上绘制时使用缩小的画布(例如Canvas.scale(0.5f,0.5f)),在导出图像上绘制时使用未更改的画布,因此大小将增大两倍谢谢您的建议。在这种情况下,图像的质量会受到影响吗?这完全取决于你在画布上画的是什么。有可能与你聊天吗?接受答案。您的所有问题都应该解决?感谢您的帮助:)请解释如何将用户元素保存为单个对象?对于用户添加的文本,请使用属性位置x和y、文本大小存储自定义对象。使用比例因子变换位置x和y,使用比例因子变换文本大小,并使用更新的值在更大的画布上绘制文本