我正在使用WIA捕获从扫描仪到Windows窗体的图像。这是我正在使用的代码:
private void button2_Click(object sender, EventArgs e)
{
const string wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";
CommonDialogClass wiaDiag = new CommonDialogClass();
WIA.ImageFile wiaImage = null;
wiaImage = wiaDiag.ShowAcquireImage(
WiaDeviceType.UnspecifiedDeviceType,
WiaImageIntent.GrayscaleIntent,
WiaImageBias.MaximizeQuality,
wiaFormatJPEG, true, true, false);
WIA.Vector vector = wiaImage.FileData;
Image i = Image.FromStream(new MemoryStream((byte[])vector.get_BinaryData()));
i.Save(@"D:\prueba1.jpeg");
}
尝试运行此小测试时,出现以下错误:
和这个:
我猜第二个错误是由于第一个错误而引起的,对吗?
对于如何解决这个问题,有任何的建议吗?
最佳答案
第二个错误是由第一个错误引起的。嵌入互操作类型功能仅支持嵌入接口(interface),不支持类。除了将WIA引用上的该选项设置为False并部署互操作库外,您还可以像这样修复它:
WIA.CommonDialog wiaDiag = new WIA.CommonDialog();
不直观,但允许使用new运算符创建COM接口(interface)。您需要为命名空间名称加上前缀,因为CommonDialog与Winforms CommonDialog类不明确。