如何在 Picturebox 中自动显示扫描的图像?

Posted

技术标签:

【中文标题】如何在 Picturebox 中自动显示扫描的图像?【英文标题】:How do I display a scanned Image automatically in a Picturebox? 【发布时间】:2015-06-29 05:29:15 【问题描述】:

我需要在扫描后自动上传图片到PictureBox

这是PictureBox的名字PictureBox ptbImgDocEmp

这是扫描仪的类

Scanner.cs

 public class Scanner
 
    Device oDevice;
    Item oItem;
    CommonDialogClass dlg;
    public Scanner()
    
        dlg = new CommonDialogClass();
        try
        
            oDevice = dlg.ShowSelectDevice(WiaDeviceType.ScannerDeviceType, true, false);
        

        catch (Exception Exp)
         MessageBox.Show("printer not detected");

    

这是一个扫描仪按钮

private void btnSca_Click(object sender, EventArgs e)
    
        Scanner oScanner = new Scanner();
        oScanner.Scann();

        SaveFileDialog saveFileDialog = new SaveFileDialog();
        saveFileDialog.FileName = "test.jpg";
        saveFileDialog.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*";
        if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        
            ptbImgDocEmp.Image = Image.FromFile(saveFileDialog.FileName);
            ptbImgDocEmp.Refresh();
        
    

【问题讨论】:

那么,您认为oScanner.Scann(); 将图片放在哪里?我知道我不知道?文档怎么说?? 在默认路径:C:\Users\MyComputer\Documents\Scanned Documents 嗯,我的意思是你的应用程序在哪里。但是,如果图像真的存储在该路径中,那么加载它们的问题在哪里?但是,不要使用 SaveFileDialog 打开它们;使用 OpenFile 对话框。如果它们被自动保存,它们可能有一个默认名称。您可以从目录中读取所有文件名并加载最后一个,不是吗? 如何在不使用 OpenFiledialog 的情况下从目录中读取所有文件名并加载最后一个文件名,如下例所示 查看我的更新答案(我删除了一些错别字)..! 【参考方案1】:

要获取创建的最后一个文件,假设它们的名称是升序的,您可以使用:

using System.IO;
..

string path = @"C:\Users\MyComputer\Documents\Scanned Documents";

var files = Directory.GetFiles(yourPath);
var filesSorted = files.OrderBy(x => x);
string lastFile = filesSorted.Last();

如果您的扫描仪软件使用非严格升序的名称创建文件,您可以使用此代码:

var files = Directory.GetFiles(yourPath);
List<FileInfo> filesInfoList = new List<FileInfo>();
foreach(string f in files ) filesInfoList.Add(new FileInfo(f));
var filesSorted = filesInfoList.OrderBy(x => x.CreationTime);
string lastFile = filesSorted.Last().FullName;

那你就可以写了

ptbImgDocEmp.Image = Image.FromFile(lastFile );

【讨论】:

以上是关于如何在 Picturebox 中自动显示扫描的图像?的主要内容,如果未能解决你的问题,请参考以下文章

WIA 扫描仪大图像尺寸

C# winform开发中用picturebox 只能显示大图片一部分,如何生成适合picturebox的图片并且保证不失真?有知

使用 Access 数据库中的 URL 在 PictureBox 中显示图像

我应该如何从屏幕空间坐标转换为 WinForms PictureBox 中的图像空间坐标?

在 PictureBox Form C# 中调整大小时丢失图像质量

如何检索 WinForms PictureBox 的缩放因子?