我在画布上有一幅画。我想包括一些简单的文本元数据,而不需要安装额外的库。查看toDataURL的结果,这似乎是可能的,方法是解析来自toDataURL结果的base64数组,并在IDAT块之前插入具有长度、类型、键: content和crc字节的块。但是,我无法将base64数组与https://www.w3.org/TR/PNG-Structure.html中描述的png结构相匹配。例如,前8个字节应该是带有小数的签名字节: 137 80 78 71 13 10 26 10。但是ASCii结果中的第一个toDataURL字符(数据后面是:base64/png;base64,“前缀”)是iVBORw0。这与预期的签名如何匹配?
我正在使用javascript,转换在客户端完成。
谢谢!
发布于 2017-06-12 15:41:14
感谢凯伊多上面的评论,我成功地使用base64 64-binary.js代码(这里是http://blog.danguer.com/2011/10/24/base64-binary-decoding-in-javascript/ )解码了这个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的示例也很有帮助。
https://stackoverflow.com/questions/44489503
复制相似问题