ArgumentNullException was unhandled

本文关键字:unhandled was ArgumentNullException | 更新日期: 2023-09-27 18:26:14

这是将图像保存到数据库的代码的一部分

Bitmap TempImage = new Bitmap(@cwd + "''Final.jpg", true);
        pictureBox.Image = new Bitmap(TempImage);//pictureBox.Image = Image.FromFile(imgName[0]);
        TempImage.Dispose();
        string name = textBox1.Text + ".jpg";
        MemoryStream mstr = new MemoryStream();
        pictureBox.Image.Save(mstr, pictureBox.Image.RawFormat);
        byte[] arrImage = mstr.GetBuffer();

则程序在pictureBox.Image.Save(mstr, pictureBox.Image.RawFormat);处停止,称为ArgumentNullException was unhandled, Value cannot be null. Parameter name: encoder

会出什么问题?

ArgumentNullException was unhandled

要拿一个WAG说你不应该处理你以后可能会弄乱的东西

using( Bitmap TempImage = new Bitmap(@cwd + "''Final.jpg", true))
{
    pictureBox.Image = TempImage // why do => new Bitmap(TempImage); here?
    string name = textBox1.Text + ".jpg";
    MemoryStream mstr = new MemoryStream();
    pictureBox.Image.Save(mstr, pictureBox.Image.RawFormat);
    byte[] arrImage = mstr.GetBuffer();    
}
// after this point, you'd better not be using pictureBox either!

此外,不确定为什么要创建两个位图。。。或者使用"pictureBox"保存图像。。。坦率地说,我越看这个代码,就越感到困惑。也许你应该问一个问题,比如

我正在尝试foo一个图像,这样我就可以禁止了。我该怎么做?

并完全跳过这段代码。

Save()的实现将对作为第二个参数(pictureBox.Image.RawFormat)传入的格式调用FindEncode(),返回null。

只需使用

pictureBox1.Image =
        Bitmap.FromFile(@"C:'Users'Public'Pictures'Sample Pictures'Desert.jpg");