이 코드가 있는데 모든 일반적인 이미지 형식을 허용하도록하려면 어떻게해야합니까? PNG, JPEG, JPG, GIF?
여기까지 내가 가진 것입니다 :
public void EncryptFile()
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
dialog.InitialDirectory = @"C:\";
dialog.Title = "Please select an image file to encrypt.";
if (dialog.ShowDialog() == DialogResult.OK)
{
//Encrypt the selected file. I'll do this later. :)
}
}
필터는 .txt 파일로 설정되어 있습니다. 내가 할 수 PNG로 변경,하지만 다른 종류의?
답변
에서 워드 프로세서 다음과 같이 당신이 필요로하는 필터 구문은 다음과 같습니다
Office Files|*.doc;*.xls;*.ppt
즉, 여러 확장명을 세미콜론으로 구분하십시오 Image Files|*.jpg;*.jpeg;*.png;...
.
답변
이미지 파일을 찾아 보는 경우이 패턴을 따르십시오.
dialog.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png";
답변
다음은 ImageCodecInfo 제안 (VB)의 예입니다.
Imports System.Drawing.Imaging
...
Dim ofd as new OpenFileDialog()
ofd.Filter = ""
Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageEncoders()
Dim sep As String = String.Empty
For Each c As ImageCodecInfo In codecs
Dim codecName As String = c.CodecName.Substring(8).Replace("Codec", "Files").Trim()
ofd.Filter = String.Format("{0}{1}{2} ({3})|{3}", ofd.Filter, sep, codecName, c.FilenameExtension)
sep = "|"
Next
ofd.Filter = String.Format("{0}{1}{2} ({3})|{3}", ofd.Filter, sep, "All Files", "*.*")
그리고 다음과 같이 보입니다 :
답변
C #의 완벽한 솔루션은 다음과 같습니다.
private void btnSelectImage_Click(object sender, RoutedEventArgs e)
{
// Configure open file dialog box
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
dlg.Filter = "";
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
string sep = string.Empty;
foreach (var c in codecs)
{
string codecName = c.CodecName.Substring(8).Replace("Codec", "Files").Trim();
dlg.Filter = String.Format("{0}{1}{2} ({3})|{3}", dlg.Filter, sep, codecName, c.FilenameExtension);
sep = "|";
}
dlg.Filter = String.Format("{0}{1}{2} ({3})|{3}", dlg.Filter, sep, "All Files", "*.*");
dlg.DefaultExt = ".png"; // Default file extension
// Show open file dialog box
Nullable<bool> result = dlg.ShowDialog();
// Process open file dialog box results
if (result == true)
{
// Open document
string fileName = dlg.FileName;
// Do something with fileName
}
}
답변
이미지 파일을 필터링하려면이 코드 샘플을 사용하십시오.
//Create a new instance of openFileDialog
OpenFileDialog res = new OpenFileDialog();
//Filter
res.Filter = "Image Files|*.jpg;*.jpeg;*.png;*.gif;*.tif;...";
//When the user select the file
if (res.ShowDialog() == DialogResult.OK)
{
//Get the file's path
var filePath = res.FileName;
//Do something
....
}
답변
Tom Faust의 답변이 가장 좋습니다. 다음은 그의 솔루션의 C # 버전이지만 약간 단순화합니다.
var codecs = ImageCodecInfo.GetImageEncoders();
var codecFilter = "Image Files|";
foreach (var codec in codecs)
{
codecFilter += codec.FilenameExtension + ";";
}
dialog.Filter = codecFilter;
답변
이미지의 경우 GDI (System.Drawing)에서 사용 가능한 코덱을 가져 와서 약간의 작업으로 목록을 작성할 수 있습니다. 가장 유연한 방법입니다.
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();