我试图在一个项目中实现一个功能,用户可以上传自己的图像文件作为化身使用,我从图像中获取jpg格式的流,并将其保存在文本文件中,与检索到它的用户名在同一行,但当我试图将picturebox的图像设置为流时,我一直收到错误消息“参数无效”,有人知道我哪里做错了吗
将流保存到文本文件的代码;
customavatar = Image.FromFile(filename);
var stream = new System.IO.MemoryStream();
customavatar.Save(stream, ImageFormat.Jpeg);
stream.Position = 0;
if(!File.Exists( textfile))
{
File.Create( textfile);
}
using (StreamWriter sw = File.AppendText( textfile))
{
sw.WriteLine("");
sw.WriteLine($"{username},{stream}");
}
将图片框的图像设置到出现错误的流的代码;
string[] filelinesarray = File.ReadAllLines(text file);
foreach (string str in filelinesarray)
{
if (str.Split(",")[0] == username)
{
byte[] byteArray = Encoding.ASCII.GetBytes(str.Split(",")[1]);
MemoryStream stream = new MemoryStream(byteArray);
Image img = Image.FromStream(stream);
picturebox.Image = img;
}
}
1条答案
按热度按时间ryhaxcpt1#
正如Fildor所说,使用base 64对图像进行编码。
我用winform(. Net Framework4.8)进行了测试,并修改了您的代码。
我自定义了一个txt文件的保存地址和用户名。并使用openfiledialog来选择需要上传的图像地址。
下面是我的演示: