什么数据用于`toDataURL`来导出base64 URI字符串

时间:2018-01-10 05:51:46

标签: javascript canvas encoding base64

我尝试实施toDataURL,这就是我所做的:

  1. 根据规范创建base64编码器。 wiki
  2. 上有编码器来源
  3. 将图像绘制到画布上,并使用`getImageData(0,0,width,height)获取图像数据
  4. rgba数据编码为base64使用编码器。
  5. 但结果与标准canvas.toDataURL的输出不同。到目前为止,我认为问题可能是rgba数据。但我不确定。

    以下是codepen

    上的演示

    修改

    在研究png算法上花了一些时间之后,我尝试实现它,但数据问题又出现了。 根据png规范,我可以将rgba用作IDAT的数据部分,同时将color type的{​​{1}}设置为IHDR,将6设置为depth {1}}。然后我通过解码来分析img的base64代码(你可以找到登录演示),一切顺利但数据长度。

    enter image description here

    图片显示8的长度仅 30 ,但画布的IDAT输出的数据长度 100

    为什么getImageData中的rgba数据与base64的数据不同?

0 个答案:

没有答案