在二进制文件的中间插入字节

yos*_*osh 12 c# iptc bytearray bytecode-manipulation

我想在图像元数据块的中间添加一些字符串.根据某些特定标记.我必须在字节级别上执行它,因为.NET不支持自定义元数据字段.

构建块就像1C 02 XX YY YY ZZ ZZ ZZ ...XX是我需要追加的字段的ID,YY YY是它的大小,ZZ =数据.

我想应该或多或少地读取所有图像数据直到这个标记(1C 02 XX)然后增加大小字节(YY YY),在ZZ的末尾添加数据然后添加原始文件的其余部分?它是否正确?

我该怎么做呢?它需要使用4-5 MB JPEG文件尽可能快地工作.

Ale*_*kov 8

通常,无法加速此操作.您必须至少读取需要移动的部分并在更新的文件中再次写入.如果可以并行化读写操作,则创建新文件并将内容复制到该文件可能会更快.

注意:在特定情况下,可能无法仅在文件中间插入内容,因为大多数文件格式的设计都没有考虑到这些修改.通常,当您移动文件的一部分时,文件的某些部分会有偏移.指定您尝试使用的文件格式可以帮助其他人提供更好的方法.