我在使用libpng编码PNG图像中的元数据时遇到麻烦。我正在编写一个绘图软件,涉及将自由能热图导出为PNG图像。一切都可以正常处理图像,但是我尝试为作者,源代码等编写的块无法正确显示。
我目前已经尝试使用以下代码使用大写而不是大写的关键字,结果没有差异。我也尝试将块放置在png文件的各个位置,但均未成功。我不确定自己在做什么错,因为规范说该块应该是一个关键字,后跟一个空字符,然后是该块的字段,并且该字段不是以null结尾的
目前,我正在尝试使用此代码编写代码块
/* Chunk variables */
png_bytep chunkname;
png_bytep data;
char *ChunkName;
char *ChunkData;
/* ... */
ChunkData = ( char* ) malloc ( 255 * sizeof ( char ) );
ChunkName = ( char* ) malloc ( 255 * sizeof ( char ) );
chunkname = ( png_bytep ) ChunkName;
data = ( png_bytep ) ChunkData;
/* ... */
sprintf ( ChunkData, "author" );
sprintf ( ChunkData + 7, "%s", UsrName );
sprintf ( ChunkName, "tEXt" );
png_write_chunk ( png_ptr, chunkname, data, 7 + strlen ( UsrName ) );
我希望辅助块中的信息能够在图像查看器中正确显示并带有pngchunks,但目前尚未显示,并且pngchunks为我的每个文本块提供以下消息
Chunk: Data Length 12 (max 2147483647), Type 1951942004 [tEXt]
Ancillary, public, PNG 1.2 compliant, safe to copy
... Unknown chunk type
Chunk CRC: 1209883642