【问题标题】:Writing additional bytes to picture c#将额外的字节写入图片c#
【发布时间】:2021-03-11 02:34:03
【问题描述】:

任务是拍照,读取其所有字节,然后在原始文件的每个非零字节后写入额外的 15 个零字节。示例:它是 B1,B2,...Bn,之后必须是 B1,0,0,..0,B2,0,0..,Bn,0,0..0。然后我需要保存/替换新图片。一般来说,我假设我可以使用 ReadAllBytes 之类的东西并创建一个字节数组,然后创建新的 byte[] 数组并从文件中获取一个字节,然后写入 15 个零字节,然后获取第二个字节等等。但是我怎么能确定它工作正常吗?我不熟悉使用字节,如果我尝试打印从文件中读取的字节,它会显示一些没有任何意义的随机符号,这就留下了一个问题:我做得对吗?如果可能的话,请指导我正确的方法和我需要用来实现它的功能,提前谢谢!

【问题讨论】:

  • 请发布您当前的代码(尽可能少,尽可能相关)、预期结果以及您所期望的。
  • 写一个测试。这就是您验证软件的方式。

标签: c# image byte


【解决方案1】:

请参阅How to convert image to byte array了解如何读取图像。

您似乎希望能够直观地查看数据。出于调试目的,您可以将每个字节显示为十六进制字符串,这将允许您“查看”数组中每个元素的十六进制值。

public string GetBytesAsHexString(byte[] bArr)
{
    StringBuilder sb = new StringBuilder();

    if (bArr != null && bArr.Length > 0)
    {
        for (int i = 0; i < bArr.Length; i++)
        {
            sb.AppendFormat("{0}{1}", bArr[i].ToString("X"), System.Environment.NewLine);
            //sb.AppendFormat("{0}{1}", bArr[i].ToString("X2"), System.Environment.NewLine);
            //sb.AppendFormat("{0}{1}", bArr[i].ToString("X4"), System.Environment.NewLine);
        }
    }

    return sb.ToString();
}

【讨论】:

    猜你喜欢
    • 2020-06-03
    • 1970-01-01
    • 2020-08-23
    • 2020-07-13
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2013-10-21
    • 2022-01-10
    相关资源
    最近更新 更多