J'ai deux méthodes, montrées ci-dessous, et je ne peux pas le faire fonctionner. Je suis en train d'ouvrir un fichier .png
d'un OpenFileDialog
et l'afficher sur un ImageBox
:La valeur était trop petite ou trop grande pour un octet non signé C#
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;
}
Dans un autre fichier que j'ai essayé d'utiliser la méthode:
OpenFileDialog OFD = new OpenFileDialog();
OFD.Filter = "Images (*.png)|*.png";
OFD.ShowDialog();
pictureBox1.BackgroundImageLayout = ImageLayout.Stretch;
pictureBox1.BackgroundImage = StringToBitmapConverter.ToBitmap(StringToBitmapConverter.StringFromFile(OFD.FileName));
Mais je reçois cette exception:
System.OverflowException: «La valeur était trop grande ou trop petite pour un octet non signé.»Aidez-nous! J'utilise ces méthodes dans une classe appelée StringToBitmapConverter
, et il y a une erreur qui me cause des problèmes, quelqu'un peut-il m'aider?
Mais comment pourrais-je résoudre le problème, qui est ce que je Je demande de l'aide avec. – Techcraft7
@ Techcraft7 cela dépend de ce que vous voulez faire, ce n'est pas exactement ce que vous essayez de faire avec 'splitBytes.Add (Convert.ToByte (byteString));'. EDIT: Je viens de regarder votre code, vous essayez d'utiliser Encoding.ASCII.GetBytes (byteString) pour lire les octets du fichier pour l'ouvrir en tant que bitmap, cela ne marchera jamais. 'Encoding.ASCII' ne peut pas représenter toutes les valeurs d'octets possibles. –
Alors comment le ferais-je? pouvez-vous faire un échantillon de code? – Techcraft7