【发布时间】:2021-07-28 18:11:17
【问题描述】:
我正在开发从第一个 png 图像中提取数据并将其附加到另一个 png 图像中的应用程序。
这是来自幻想的游戏。他们在 IEND®B` 之后将字符数据等数据存储到 png 图像中。因此它可以通过在新的 png 文件末尾附加字符数据来更改字符的图像。
我已经在 python 中这样做了
with open (src_image_path, 'rb') as f:
s = f.read()
text = b"IEND\xaeB`\x82"
data_to_write = s.split(text)
with open (dest_image_path, 'ab') as newImage:
for i in range(1,len(data_to_write)):
newImage.write(data_to_write[i])
newImage.write(text)
注意:第一个索引是第一个图像的png图像数据。我不需要它。因为我只希望第一个索引之后的数据附加到第二个图像中。
在 C# 中
我尝试将所有字节读入字节数组,但找不到 IEND®B` 的索引。它总是返回 -1
byte[] bytes = File.ReadAllBytes(filePath);
byte[] byteToFind = Encoding.UTF8.GetBytes("IEND®B`");
GetFirstOccurance(byteToFind ,bytes);
public static int GetFirstOccurance(byte[] byteToFind, byte[] byteArray)
{
return Array.IndexOf(byteArray, byteToFind);
}
注意:我可以通过在 notepad++ 中打开 png 文件找到 IEND®B`。它总是在 png 文件的末尾
如何在 C# 中做到这一点
我想在第一个 png 中的 IEND®B` 之后复制数据并附加到第二个 png 中。
【问题讨论】:
-
你写了一个函数GetFirstOccurance,它返回一些东西。然后你调用该函数而不使用返回值。这个提示应该会让你走得更远。