Вставьте блок комментариев PNG (iTXt), используя JavaScript - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу вставить комментарий в формате 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 поврежден, если имя типа чанка первый символ в верхнем регистре?ТЕКСТ

Если у кого-то есть понимание, которым можно поделиться, добро пожаловать

...