如何读取.png文件,并显示为文本框中的文本
本文关键字:文本 显示 文件 何读取 读取 png | 更新日期: 2023-09-27 18:13:20
我需要打开一个。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;
}
我需要在多行文本框中添加如下内容:
‰PNGIHDR O Ů/ç%O sRGB®Îé gAMA±Źüa pHYs Ă ĂÇo¨d(IDATx ^我ť˝ŽŢF˛†' T°łUčĐ* o,°的Zl˛€®b7t8-0ˇB‡ľ"(;7美元tb@p
ř«Ş9ŐĹźŻŮě˙®ŻŰ{H6«ş^5ÉŤžţ0ăÉÁŰĆ#,WXš*CĆxŰ0˛aEVv¶yۨ•ť&ˇÉŘ oFU¬5Ńć$cĽm”ÂrĄIX:čëŢ6ęałĄ)26ŔŰFKŘĽbiÚŚ đ¶a´yŰ…éJśť}ěí“/F×XŮŇ®čëŢŕŇÎFŘ”Ň}šäL/¶ľ=ń÷Ď
Ʀ,我Ňcuq美元¶Mł¦Y4) 3«MĂ0®ŇŠ"™我؆ś:¦jŮŰM]Ś美元$ {eŁŻx»y; 5 ~ yĆ;˛@§我±5ŰŇőĹωm·Ň"ľ^ŕèU 'ŇDĆxŰ0Ś®8´。ŰĽ毫升°一čž3š?€6克Ćp +的EiłŃ6(«ŕ
但我只得到一个字:
PNG�
请帮帮我!
二进制数据最好用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#中,字符串可以保存任意的位模式;但是旧的Winform TextBox
仍然与c#之前的方式相同,可能是用c++编写的,并且不能正确处理旧的字符串终止字符0x0。
虽然最初的问题不是File.ReadAllText
的使用,但在您的工具箱中拥有BinaryReader
及其许多有趣的方法是非常值得的。
结果并非完全无用-我刚刚发现我的测试文件有一个嵌入式Photoshop ICC配置文件;-)
不知道为什么你要这样做,但如果这是你真正想要的,你可以使用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编码的字符串转换为图像....