ArgumentNullException未处理

时间:2012-02-28 18:00:57

标签: c#

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

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

会出什么问题?

3 个答案:

答案 0 :(得分:4)

要拿一个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图像,以便我可以禁止。我该怎么做?

并完全跳过这段代码。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

只需使用

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