【问题标题】:C# Save Image files using SaveFileDialog or FolderBrowserDialogC# 使用 SaveFileDialog 或 FolderBrowserDialog 保存图像文件
【发布时间】:2020-10-07 22:53:18
【问题描述】:

我正在尝试保存从 PDF 转换为 PNG 的图像文件。如果 PDF 是使用“SaveFileDialog”的单页文档,我希望我的应用程序保存转换后的图像,如果 PDF 文件是多页文档,我希望我的应用程序使用“FolderBrowserDialog”将它们保存到文件夹中”。

我的问题是,如果 PDF 文件是多页文档,我的代码将首先使用“SaveFileDialog”保存第一个图像(转换后),然后再尝试使用“FolderBrowserDialog”保存其余图像。

这是我尝试过的。

Image = imageToConvert = null;

for (int i = 0; i < images.Length; i++)
{
    if (i == 0)
    {
        //Save converted image if PDF is single page
         imageToConvert = images[i];

        SaveFileDialog _saveFile = new SaveFileDialog();
        _saveFile.Title = "Save file";
        _saveFile.Filter = "PNG|*.png";
        _saveFile.FileName = Lbl_OriginalFileName.Text;


        if (_saveFile.ShowDialog() == DialogResult.OK)
        {
            imageToConvert.Save(_saveFile.FileName, ImageFormat.Png);

            imageToConvert.Dispose();
        }
        else if (_saveFile.ShowDialog() == DialogResult.Cancel)
        {
            return;
        }
    }
    else
    {
        if (i > 0)
        {
            // Save converted Images if PDF is multi-page
            Image imageToConvert2 = images[i];

            FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.ShowDialog();
            fbd.Description = "Select the folder you want save your files into.";

            string pathString = Path.Combine(fbd.SelectedPath, subFolder);
            Directory.CreateDirectory(pathString);

            if (fbd.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            
                string saveFileNamesPNG = string.Format(Lbl_OriginalFileName.Text + "_" + i.ToString() + ".png", ImageFormat.Png);
                imageToConvert.Save(Path.Combine(pathString, saveFileNamesPNG));
           
            imageToConvert.Dispose();
        }
    }
}

非常感谢任何帮助。

【问题讨论】:

  • If images.Length = 1 then SaveFileDialog else if images.Length &gt; 1 then FolderBrowserDialog,其中for each img as Image in Images将img保存到光盘。如果images.Length = 0 什么都不做。
  • 所以我将几行代码更改为您的,应用程序现在可以单独保存转换后的文件,但是,现在我遇到了这个问题,我的 FolderBrowserDialog 无法将图像保存到一个文件夹。在将图像保存到其文件夹之前,它会不断弹出大约 4 次。

标签: c# winforms savefiledialog folderbrowserdialog


【解决方案1】:

我将测试移到循环之外,然后检查它是否是一页并使用 SaveFileDialog。如果有多个,我会使用带有 For 循环的 FolderBrowserDialog 来保存图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多