如何在图片框中使用 WIA 显示从扫描仪获取的图像

How to show an image obtained from a scanner using WIA in a picture box

我想在图片框中显示从扫描仪检索到的图像。到目前为止,我已经能够将图像保存到临时文件中:

 private void btnScan_Click(object sender, EventArgs e)
 {
        var fn = System.IO.Path.GetTempFileName();
        System.IO.File.Delete(fn);
        var image = Scanner.Scan();
        image.SaveFile(fn);
        _ScannedImage = Bitmap.FromFile(fn);
        pictureBoxMain.Image = _ScannedImage;
 }

有没有办法转换ImageFile中的图像数据class避免保存到磁盘?

您可以将 ImageFile 转换为 Image,然后创建一个 Bitmap 对象:

var myImage = (Image)imageFile;
Bitmap bmp = new Bitmap(myImage);

因此您不必(按照您的要求)保存在路径中。

请告诉我这是否适合你。

查看此 post 关于从 ImageFile 到 Image 的转换: Load a picturebox from a WIA ImageFile?

根据@C。 Colin 评论,有一种方法可以使用内存流从 ImageFile 获取位图:

var imageBytes = (byte[])image.FileData.get_BinaryData(); 
var ms = new MemoryStream(imageBytes);
var img = Image.FromStream(ms);

Load a picturebox from a WIA ImageFile?