0

我正在 C# Winforms 上创建一个应用程序,它扫描文档并将它们放入 PictureBox,但是当我尝试扫描它时会抛出一个异常,提示“对象引用未设置为对象的实例”并且不允许我继续,堆栈跟踪如下;

澄清一下,这是一个工作项目,以防有人对某些类名感到震惊。

AbDesktop.exe!AbDesktop.FrmCreditCards.ScanSetup() Line 39  C#
    AbDesktop.exe!AbDesktop.FrmCreditCards.ScanFrontBtn_Click(object sender, System.EventArgs e) Line 94 + 0x8 bytes    C#
    [External Code] 
    AbDesktop.exe!AbDesktop.Program.Main(string[] args) Line 26 + 0x20 bytes    C#
    [External Code] 

这是导致问题的代码;

 public void ScanSetup()
 {
     WIA.CommonDialog dialog = new WIA.CommonDialog();
     ImageFile scannedImage=null;

     scannedImage = dialog.ShowAcquireImage(
         WiaDeviceType.ScannerDeviceType,
         WiaImageIntent.UnspecifiedIntent,
         WiaImageBias.MaximizeQuality,
         FormatID.wiaFormatPNG,
         true, true, false);
     scannedImage.SaveFile("C:/Users/reece.cottam/Pictures");
 }

这是触发点击事件时执行上述代码的按钮

private void ScanFrontBtn_Click(object sender, EventArgs e)
{
    ScanSetup();
    ImageFile IF = new ImageFile();
    FrontScanBox.Image = IF.LoadFile("scannedimage.png");
}

任何帮助将不胜感激。

编辑 导致错误的代码行是 ScannedImage.Savefile

4

3 回答 3

1

如果没有关于哪一行引发异常的额外信息,我猜它是该行scannedImage.SaveFile(...);,因为文档说明CommonDialog.ShowAcquireImage(...)可能会返回空值。在这种情况下,当您尝试对变量进行操作时scannedImage,您可能会尝试对空引用进行操作。

于 2013-07-19T12:23:57.723 回答
0

您是否尝试过指定一个实际文件,而不仅仅是要保存到的目录?

scannedImage.SaveFile("C:/Users/reece.cottam/Pictures/test.png");

缺少合适的文件名可能会导致 SaveFile 函数出错。尽管这应该在异常详细信息中可见。

于 2013-07-19T12:50:51.987 回答
0

文档很清楚,ShowAcquireImage方法成功时返回 ImageFile 对象,否则返回 Nothing。.

scandImage为 null 因为此方法不成功,您需要查看此处传入的参数,阅读文档并适当调整它们,直到获得您想要的图像。

于 2013-07-19T12:27:13.743 回答