C# сохранение файлов изображений с помощью savefiledialog или folderbrowserdialog
Я пытаюсь сохранить файлы изображений, которые преобразуются из 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(); } } }
Я был бы очень признателен за любую помощь.
Richard MacCutchan
Зачем вам нужны два разных диалога? Просто используйте SaveFileDialog и позвольте пользователю решить, где его сохранить и как назвать. Вы должны проверить количество изображений перед запуском цикла for; первое изображение всегда будет иметь значение индекса, равное нулю.
Member 14766911
Мне нужны два диалоговых окна, потому что я хочу, чтобы пользователь сохранил одностраничный PDF-файл, который был преобразован в изображение с помощью "SaveFileDialog", и если PDF-файл многостраничный, я хочу, чтобы пользователь сохранил эти изображения в папку с помощью "FolderBrowserDialog".
Richard MacCutchan
Вы все еще можете сделать это с помощью одного диалога.
BillWoodruff
Где находится тест, который определяет, существует ли одно изображение или несколько ?
Member 14766911
Я использую операторы If после цикла for, чтобы проверить это