2016-02-02 16 views
0

Итак, я делаю проект в Windows Forms, в котором мне приходится менять форматы изображений. Я нашел для этого различные решения, такие как: convert tiff to jpg format
c# convert image formats to jpg. И эти решения работают, но все они имеют одно сходство:Как сохранить форматированные IMages с помощью savefiledialog?

image.Save(path,ImageFormat.Jpeg) 

В этом коде я спасительной изображение в одном каталоге. Я хочу сохранить эти отформатированные изображения с помощью Savefiledialog. Но в этом случае, когда я звоню Savefiledialog, мне нужно написать имя и формат изображения. Если я не пишу формат, он создает простой файл без расширения. Я хочу автоматически сохранить файл в указанном формате. Итак, как это сделать?

+0

Вы ожидающие их к типу «[имя файла] [Filetype].» В SaveFileDialog, или вы ожидаете их использовать селектор типа? У вас есть строка фильтра? Добавьте код SaveFileDialog и уточните, как вы хотите определить тип файла. Вам в основном нужно будет запускать оператор case по некоторым критериям и сохранять его в разных типах в зависимости от того, что они выбирают ... Но мы не можем помочь с тем, что вы предоставили. – Aaron

+0

Этот код: image.Save (путь, ImageFormat.Jpeg) означает, что это изображение будет сохранено в директории «путь»? – dave1993

+0

'SaveFileDialog' не даст вам формат - просто имя файла. Вы должны выбрать расширение из диалога (как только оно вернет результат) и сохранить соответственно. – code4life

ответ

0

Я хотел бы написать что-то простое, как это:

// might make sense to make this a property under the relevant class 
Dictionary<string, ImageFormat> mapOfExtensions = 
    new Dictionary<string, ImageFormat> 
    { 
     {".jpg", ImageFormat.Jpeg}, 
     {".jpeg", ImageFormat.Jpeg}, 
     {".png", ImageFormat.Png} 
    }; 

var ext = Path.GetExtension(path); 

// safety check - make sure the file extension is what we expect... 
if (!mapOfExtensions.Contains(ext)) 
{ 
    // probably would make sense to throw an error, log a message, etc. 
    return; 
} 

image.Save(path,mapOfExtensions[ext]); 
+0

Нет, я могу это сделать. Я хочу сохранить файл образованного файла в компьютере с FileDialog. например, я открываю FileDialog и выбираю Desktop для каталога, где хочу сохранить изображение, чем снова открываю FIleDialog и сохраняю его в MyDocuments и s.o. Я хочу легко сохранить образованное изображение в компьютере. Я не хочу писать каждый раз image.Save («C: // Desktop», mapOfExtensions [ext]) или image.Save («D: // Images», mapOfExtensions [ext]). – dave1993

+0

Думаю, вам не хватает точки объектно-ориентированного программирования dave. Вы помещаете этот код в функцию, и в любом месте приложения, которое вы хотите назвать, вы просто вызываете функцию. Вам не нужно писать эту строку повсюду. Если вы хотите выбрать папку по умолчанию, вы должны установить глобальную строковую переменную string.empty, а затем проверить ее в этой функции, если она не установлена, показать диалог сохранения файла и установить его, если он не пуст, используйте эту папку , Нет ничего плохого в этом ответе. – Aaron

Смежные вопросы