当前位置: 首页 > 知识库问答 >
问题:

toDataURL()小屏幕,小保存图像

姚胡媚
2023-03-14

我创建了一个使用HTML5画布元素的网络应用程序,允许用户绘制各种形状、颜色、线宽。他们也可以上传一张图片,把它画在画布上,然后在上面画画,作为注释他们的图片的一种方式。

我的挑战是我正在使用。toDataURL()获取画布的全部内容,并将其保存为图像。但据我所知,这只能捕获画布的大小。在较小的设备(手机)上,保存的图像最终尺寸非常小。下面是我为获得画布上的内容所做的:

var image=文档。getElementById(“drawingCanvas”)。toDataURL(“图像/jpeg”,1.0);

Image=image.replace('data: Image/jpeg; Base64,', '').替换('data: Image/png; Base64,', '');

是否有一些方法可以设置我的画布,以便能够保存较大的图像,即使由于设备原因,画布的大小非常小?

共有1个答案

唐烨煜
2023-03-14

当然

  1. 保存用于创建客户端图形的命令
  2. 使用文档创建更大的内存画布。createElement
  3. drawImage将全尺寸图像放到画布上
  4. 上下文。缩放画布
  5. 重新发出绘图命令
  6. 使用导出放大的画布。toDataURL

多亏了上下文。缩放不必更改图形命令的任何坐标。

...或者。。。

如果您愿意降级图形以允许出现一些“锯齿”,则可以取消步骤1。通过使用CSS在客户机的img上覆盖画布来实现这一点。这样,客户的图形就已经在原始画布上被隔离了。然后,您的过程简化为:

  1. 使用文档创建更大的内存画布。createElement。确保较大的画布与原始画布具有相同的纵横比
  2. drawImage将全尺寸图像放到画布上
  3. drawImage将原来较小的画布转换为较大的画布。您可以使用drawImage的扩展版本同时缩放客户端的图形:context。drawImage(originalCanvas,0,0,originalCanvas.width,originalCanvas.height,0,0,largerCanvas.width,largerCanvas.height)。是的,drawImage的图像源可以是另一个画布。;-)
  4. 使用导出放大的画布。toDataURL

 类似资料:
  • 低密度120 dpi mdpi中密度160 dpi 高密度240 dpi XHDPI:2.0 HDPI:1.5 MDPI:1.0(基线) 这意味着,如果为xhdpi设备生成200x200映像,则应为hdpi生成150x150的相同资源,为mdpi生成100x100,最后为ldpi设备生成75x75映像 这是否意味着如果我以640x360为基线,我必须制作以下4组图像: 1)ldpi-大小480x2

  • 这一定是这里问得最多的问题之一,通常只是针对Android开发者网站。读完留档后,我只想来这里澄清一下。 我理解,为了创建优化的用户体验,每个屏幕大小和密度都必须有不同的可绘制内容。我只想要一个简单的背景图像。因此,我需要为mdpi、hdpi、xhdpi和xxhdpi创建背景图像。经过研究,我发现以下大小的文件夹: 超大型 (XHDPI):640x960 大 (HDPI):480x800 中 (M

  • 我想在我的应用程序中使用背景图像。但是我对不同的屏幕大小感到困惑。我发现了这个问题: Android:支持所有设备的背景图像大小(以像素为单位) 但在回答中他说但Lg G3是和屏幕分辨率: 我需要一个路线图。所有屏幕的图像尺寸应该是多少?(mdpi、hdpi、xhdpi等)

  • 我正在使用一个库从url获取图像并将其作为位图图像保存到缓存中。但是当我检索该图像时,它非常小。如何根据手机屏幕增加位图图像的高度和宽度?这是创建位图的类。

  • 我正在使用android gif绘图库在我的android应用程序中显示gif图像。正如您所知,gif图像应该位于文件夹中,而不是位于文件夹中,因此android无法自动在不同大小之间切换。 我如何处理不同屏幕尺寸的问题?

  • 嘿,伙计们,我只是想问一下,当我们显示一个背景图片在我们的活动,我们把图片放在可绘制的文件夹与子不同的文件夹,像 并且每个文件夹都有一个特定的密度和尺寸,这样它就可以支持多个设备等。 我想问一下,如果我的图片尺寸是3000*3000,我是否需要为每个文件夹修改我的图片 首先,我必须修改它为720*1280的xhdpi,然后把它放在layout_xhdpi文件夹,然后我修改它为hdpi,即400*8