【发布时间】:2017-10-01 19:31:52
【问题描述】:
我有 2 种方法,如下所示,但我无法让它工作。我正在尝试从OpenFileDialog 打开一个.png 文件并将其显示在ImageBox 上:
public static Bitmap ToBitmap(this string input)
{
List<byte> splitBytes = new List<byte>();
string byteString = "";
foreach (char i in input)
{
byteString += i;
if (byteString.Length == 3)
{
splitBytes.Add(Convert.ToByte(byteString));
byteString = "";
}
}
if (byteString != "")
splitBytes.AddRange(Encoding.ASCII.GetBytes(byteString));
using (var ms = new MemoryStream(splitBytes.ToArray()))
{
var img = Image.FromStream(ms);
Bitmap output = new Bitmap(img);
return output;
}
}
public static string StringFromFile(string input)
{
StreamReader sr = new StreamReader(input);
string file = string.Empty;
while (sr.EndOfStream == false)
{
file += sr.Read();
}
return file;
}
在另一个文件中我尝试使用该方法:
OpenFileDialog OFD = new OpenFileDialog();
OFD.Filter = "Images (*.png)|*.png";
OFD.ShowDialog();
pictureBox1.BackgroundImageLayout = ImageLayout.Stretch;
pictureBox1.BackgroundImage = StringToBitmapConverter.ToBitmap(StringToBitmapConverter.StringFromFile(OFD.FileName));
但我得到了这个例外:
System.OverflowException: '对于无符号字节而言,值太大或太小。'
请帮忙!
我在一个名为StringToBitmapConverter 的类中使用这些方法,但有一个错误给我带来了麻烦,谁能帮助我?
【问题讨论】:
标签: c# winforms byte overflowexception