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

如何将文本块附加到画布数据数组中,并将其保存为javascript中的png文件?

杜思远
2023-03-14

我在画布上有一幅画。我想包含一些简单的文本元数据,而不需要安装额外的库。查看toDataURL的结果,这似乎可以通过从toDataURL结果中解析Base64数组并在IDAT块之前插入带有长度、类型、key: Content和crc字节的块来实现。但是,我还无法将Base64阵列与https://www.w3.org/TR/PNG-Structure.html.中描述的png结构相匹配。例如,前8个字节应该是带有小数:137 80 78 71 13 10 26 10的签名字节。但是toDataURL结果中的第一个ASCii字符(在data: Image/png; bas64"前缀之后)是iVBORw0。这和预期的签名有什么关系?

我使用javascript和转换是在客户端完成的。

谢谢!

共有1个答案

欧盛
2023-03-14

多亏了Kaiido上面的评论,我成功地使用base64-binary.js代码解码了toDataURL数组:http://blog.danguer.com/2011/10/24/base64-binary-decoding-in-javascript/.这是如何使用它的代码片段:

  pngLayer = layerToSave.canvas.toDataURL();
  var uintArray = Base64Binary.decode(pngLayer.replace(/data:image\/png;base64,/,''));
  console.log("signature:", uintArray.slice(0,8));
  console.log("chunk 1 length:", uintArray.slice(8,12));
  console.log("chunk 1 type:", uintArray.slice(12,18));

这个c代码作为如何使用png结构的示例也很有帮助:https://github.com/gbenison/png-text-embed/blob/master/png-text-append.c

 类似资料:
  • 我有一个画布元素,其中有一个绘图,我想创建一个按钮,当点击它时,它将把图像保存为一个png文件。因此它应该打开“保存、打开、关闭”对话框... 我使用这个代码 但当我在IE9中测试它时,一个新窗口打开了,上面写着“网页无法显示”,其url是: 有人知道怎么解决这个吗?

  • 问题内容: 我有这个项目: 导入文件 连接到SQL Server数据库 将所有数据转移到数据库中 文本文件按选项卡划分为四个字段,例如数据库。 我已经完成了使用富文本框并将所有数据保存在字符串中的第一步。我的想法是将字符串拆分为每行并将其保存在数组中,然后:如何拆分每一行,以便可以正确保存字段?如何将SQL Server上的数据库连接到C#上的项目? 问题答案: 让我们一次解决这一步骤… 获取数据

  • 我有一个类似tmp的RDD。 其值如下所示。

  • 当我启动这个代码时,你通常认为它会在文本文件中输入一个100,但我不知道为什么它会像字符一样输入一个“d”。有人知道如何修复吗?一个方法应该输入一个数据,一个应该输入那个数据,一个应该保存那个数据。

  • 问题内容: 是否可以将JSON数据保存到本地文本文件中?因此,稍后我可以通过加载该文件再次使用它,并取回存储的JSON数据。其实我真正想做的是在文本文件中导出JSON数据,以便以后可以用作import.Any的建议或解决方案? 这是我要用于导出到文本的一些示例。 http://jsfiddle.net/k56eezxp/ 问题答案: 是否可以将JSON数据保存到本地文本文件中? 是。当前,链接的j

  • 问题内容: 我正在尝试将canvas元素另存为png图像。这是我现在的代码,但是不幸的是,它不起作用: 我想看看Python中的解决方案。我还希望在屏幕快照的末尾看到不需要裁剪的解决方案。 问题答案: 您可以调用将画布作为PNG base64字符串获取。这是一个工作示例: