Я хочу вставить комментарий в формате UTF-8 в PNG.Контекст в современном браузере: экспортируйте -canvas- и добавьте некоторые метаданные в PNG перед загрузкой пользователя, затем импортируйте их и прочитайте метаданные.
Спецификации PNG для метаданных говорят о iTXt
Я вижу хороший ответ здесь на SO об этом, со всеми шагами для достижения блока текста, но без кода.
Я нашел простую библиотеку nodejs node-png-метаданные для управления метаданными PNG.
С помощью этих ресурсов мне удалось выполнить некоторые уловки, такие как вставка фрагмента и его чтение, но, похоже, это недопустимый блок iTXt (то же самое с блоком tEXt), потому чтоинструменты типа pngchunks или pnginfo не могут этого понять.
См. Это рабочая скрипка для воспроизведения импорта 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
У результирующего PNG поврежден, если имя типа чанка первый символ в верхнем регистре?ТЕКСТ
Если у кого-то есть понимание, которым можно поделиться, добро пожаловать