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

将ImageData对象(不是画布)转换为图像数据URL

高运诚
2023-03-14

我想从ImageData对象(即宽度、高度、数据)创建一个dataURL。我意识到canvas有这个功能,但我想避免canvas使用时出现的扭曲(主要是alpha预乘)。。i、 我想避开明显的画布。putImageData步骤。

从这篇文章中,我可以将任何arraybuffer/typedarray/dataview转换成base64。我不知道的是canvas dataurl如何将宽度/高度添加到base64字符串的Uint8数据部分。我也不知道png转换是如何完成的。(我可以使用原始数据图像类型,但我认为没有。只有png和jpg)

可能的做法:

  • 使用putImageData将ImageData加载到画布中。失败,数据失真
  • 使用img创建图像。src=base64数据。失败,必须是画布数据URL
  • 其他的

有人知道如何从原始宽度、高度、数据Imagedata构建图像数据URL吗?

共有1个答案

章茂
2023-03-14

从理论上讲,可以将ImageData对象转换为数据URL,而不使用画布

ImageData对象具有图像像素的原始RGBA表示。数据URL要求数据采用公认的MIME格式。根据MDN,唯一广泛支持的基于像素的图像类型是GIF、JPEG、PNG和ICO。GIF和JPEG非常复杂,所有这些格式都有标题信息,PNG有CRC,因此将像素数据转换为图像格式并非易事。

进行转换的推荐方法是使用Canvas。你说你的尝试“扭曲”了数据,但这表明你的方法有问题,因为这确实是最好的支持方法,因为它建立在浏览器用来处理所有图像的内部。

您是否检查了您的上下文设置?您可能需要ctx。globalCompositeOperation=“copy”而不是默认的“源代码覆盖”(如果您使用的是alpha)。

 类似资料:
  • 我正在尝试将画布作为图像发送到我的服务器,并希望以base64发送。Fabricjs提供了使用或将画布转换为图像,但我的日志上的输出似乎是一个Klass对象(第一次看到),将该对象发送到服务器并记录服务器上接收到的内容后,我会得到一个空对象或路径,即: Klass对象控制台图像: 我的代码: 我尝试了这个,仍然是同一个klass对象,需要将画布转换为base64图像(首选png),然后发送到服务器

  • 以下是我现在使用HTML5文件API上传多个图像的代码片段: 我想在使用canvas对象上传之前调整图像大小,但没有这方面的经验,我不确定如何使用技术更新代码,例如这里描述的技术:HTML5在上传之前预调整图像大小 将返回一个编码字符串。但是我需要发布对象。 您将如何(合理地)为大多数现代浏览器编写跨浏览器功能,以便在上传之前调整文件大小,以透明方式处理jpg、png和GIF:

  • 因此,我有一个网络摄像头功能,可以将base64 URI返回给我,但我无法将其保存到AWS,因为它需要一个图像对象。有没有办法将URI转换成javascript对象?(文件对象与文件浏览器输入标记返回的相同) 我想把这个换成 这件事 可能吗?怎样提前谢谢。。

  • 问题内容: 我希望能够从Java操作方法中的JSON字符串访问属性。只需说一下即可使用该字符串。下面是该字符串的示例: 在此字符串中,每个JSON对象都包含其他JSON对象的数组。目的是提取ID列表,其中任何给定对象都具有包含其他JSON对象的group属性。我将Google的Gson视为潜在的JSON插件。谁能提供某种形式的指导,说明如何从此JSON字符串生成Java? 问题答案: 我将Goog

  • 问题内容: 如何在“画布”中打开图像?被编码 我正在使用 输出是已编码的base 64图像。如何在画布上绘制此图像? 我要使用 并创建图片吗?可能吗? 如果不是,那么将图像加载到画布上的解决方案可能是什么? 问题答案: 给定一个数据URL,您可以通过将图像的设置为数据URL来创建图像(在页面上或仅在JS中)。例如: HTML5 Canvas Context 的方法使您可以将图像(或画布或视频)的全

  • 我有一个带有对象的数组()。对象包含一个 orgId 和一个 orgName。 有没有一种简便的方法可以将它转换成< code>Map[Long,String] (orgId,orgName)