C# 如何读取.png文件并在文本框中显示为文本?

C# 如何读取.png文件并在文本框中显示为文本?,c#,C#,我需要以字符串形式打开一个.png文件并将其放入文本框中。我正试图通过以下代码来实现这一点: private void button1_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.ShowDialog(); text1.Text = dialog.FileName; string text

我需要以字符串形式打开一个.png文件并将其放入文本框中。我正试图通过以下代码来实现这一点:

 private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog dialog = new OpenFileDialog();
        dialog.ShowDialog();
        text1.Text = dialog.FileName;
        string text = System.IO.File.ReadAllText(dialog.FileName);
        text2.Text = text;
    }
我需要在我的多行文本框中输入如下内容:

text2.Text = text.Replace((char)0, '.');
‰巴布亚新几内亚 IHDR OŮ/ç%O sRGBÎgAMAŹa pHYsĂĂĂĂd (IDATxťťŢF˛†TłUč272;á*,“Zl”b7t8-0ØB);7Tb@p美元«代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码»代码 500万加元的收益:26亿美元 !™Í؆ś:ŮjŰM]a${eŁx»y;5~yĆ›˛@i±5ŰŇĹĎy ·!

但我只有一个词:

�巴布亚新几内亚


请帮帮我!

不知道为什么要这样做,但如果这是您真正想要的,您可以使用base64编码字符串

Read a Image file:
Bitmap loadedBitmap = Bitmap.FromFile(dialog.Filename);
Image imgFile = Image.FromFile(dialog.Filename);


using (MemoryStream ms = new MemoryStream())
  {
    // Convert Image to byte[]
    image.Save(ms, format);
    byte[] imageBytes = ms.ToArray();

    // Convert byte[] to Base64 String
    string base64String = Convert.ToBase64String(imageBytes);
    text2.Text = base64String;
  }

当您读回该字符串时,您可以进行反向操作并将base64编码字符串转换为图像。

二进制数据最好使用
BinaryReader
读取。要在
TextBox
中显示它们,您需要替换0x00字符,这样它就不会中断控件中的文本

这将用“.”替换0x00字符:

using (BinaryReader br = new BinaryReader(File.Open(yourFile, FileMode.Open)))
{
    var data =  br.ReadChars  ((int)br.BaseStream.Length);
    StringBuilder sb = new StringBuilder();
    foreach (char c in data) 
             if ((int)c > 0) sb.Append(c.ToString()); else sb.Append(".");
    text2.Text = sb.ToString();
}
编辑:

如果您像这样修改最终分配,您的原始代码也将起作用:

text2.Text = text.Replace((char)0, '.');
<>解释:在C++中,A字符串可以保存任意的位模式,但是旧的代码> WiFrm文本框仍然与C语言之前的方式相同,可能是用C++编写的,并且不会正确处理旧的字符串终止字符0x0。 虽然最初的问题不在于使用
File.ReadAllText
,但在工具箱中使用
二进制读取器及其许多有趣的方法是非常值得的


结果并非完全无用-我刚刚发现我的测试文件中嵌入了Photoshop ICC配置文件;-)

你不能使用file.ReadAllText,因为PNG文件不包含文本。看看BinaryReader吧!如果运气好的话,你可以显示它的结果,但当然它只会是一些字节的主要不可理解的数据。。(看起来OP想要列出文件的内容,而不是提取任何相关文本。)这闻起来像是试图解决一个解决方案而不是一个问题。几乎可以肯定,有一种方法比你在这里尝试做的更好地实现你的最终目标。你真的想要查看PNG文件的一些乱码文本表示吗?@itsme86,症状..但是,是的,我也同意。谢谢你的帮助。它工作得很好。我需要这个从游戏重播文件中获取信息,但很难解释我对未知文件的要求。很好。请同时查看我的编辑…(如果它对您有效,您可能希望接受答案。)哦,抱歉,这是我在该网站上的第一个问题。当然,答案被接受。