我想在PNG中插入UTF-8注释。上下文位于现代浏览器中:导出-canvas-,并在用户下载之前将一些元数据添加到PNG中,然后导入并读取元数据。
PNG specs for metadata, says about iTXt
我看到了一个good answer here on SO的相关信息,其中包含实现tEXt块的所有步骤,但没有代码。
我发现了一个简单的nodejs库node-png-metadata,用于管理PNG元数据。
有了这些资源,我成功地完成了一些技巧,例如插入一个块并读取它,但这似乎不是有效的iTXt块(与tEXt块相同),因为诸如pngchunks或pnginfo之类的工具无法理解它。
观看此working fiddle进行播放,导入PNG会添加元数据并显示它!用tEXt或iTXt块进行测试
在第21行附近,围绕块的创建进行了一些测试
var txt = {
sample: '@à$'
};
var newchunk = metadata.createChunk("tEXt", "Comment"+String.fromCharCode(0x00)+"heremycommentl"); // works but not conform
var newchunk = metadata.createChunk("TEXt", "Comment"+String.fromCharCode(0x00)+"heremycommentl"); // result invalid png
var newchunk = metadata.createChunk("iTXt", "Source"+String.fromCharCode(0x00)+"00fr"+String.fromCharCode(0x00)+"Source"+String.fromCharCode(0x00)+""+JSON.stringify(txt));// works but not conform
如果块类型名称first char为大写,则在结果PNG旁边损坏? TEXt
如果您有一些可以分享的知识,欢迎您