微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# 从 png 文件中提取数据并附加到另一个 png 文件中

如何解决C# 从 png 文件中提取数据并附加到另一个 png 文件中

我正在开发从第一个 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);
}

注意:我可以通过在记事本++中打开 png 文件找到 IEND®B`。它总是在 png 文件的末尾

我如何在 C# 中做到这一点

我想复制第一个 png 中 IEND®B` 之后的数据并附加到第二个 png 中。

解决方法

您使用的 IndexOf 版本可能是这个:

public static int IndexOf (Array array,object? value)

即在对数组的引用后通过无类型数组进行搜索。

我希望您想搜索特定的字节序列,但这不是 IndexOf 所做的。您可能需要编写自己的搜索循环,或者看看这个问题:How to find index of sublist in list

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?