C#使用SaveFileDialog或FolderBrowserDialog保存图像文件

问题描述

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

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

这是我尝试过的。

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();
        }
    }
}

我将非常感谢您的帮助。

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...