我有一个 UWP 应用程序,它可以选择打开图像序列。通常图像序列命名如下:
MyImageSequence_00001.png, MyImageSequence_00002.png, ... MyImageSequence_01024.png, MyImageSequence_01025.png,
通常,这些图像序列将被命名为“UniqueFileName_v06”之类的名称,后面带有“_0004”之类的帧号。在很多情况下,您可以在同一个文件夹中有多个图像序列,但它们将具有不同的前导名称,例如“UniqueFileName_v04_Reflections”或“UniqueFileName_v04_Depth”。起始帧号可以是任何数字,并且帧号将按顺序增加到序列的最后一帧。
我目前让用户手动选择所有文件,如下所示:
FileOpenPicker filePicker = new FileOpenPicker();
filePicker.ViewMode = PickerViewMode.List:
filePicker.FileTypeFilter.Add(".png");
filePicker.FileTypeFilter.Add(".jpg");
filePicker.FileTypeFilter.Add(".tif");
files = await filePicker.PickMultipleFilesAsync();
我希望做的是允许用户通过从文件选择器中的序列中选择单个图像来打开他们的图像序列。因此,如果他们选择“MyImageSequence_00003.png”,应用程序将找到并选择序列中的其余文件(MyImageSequence 00001-01025)并将它们添加到filePickerSelectedFilesArray
变量files
中。
其次,我想从文件列表中生成一个复合字符串名称。因此,生成一个类似“MyImageSequence_00001-01025”的名称来标识图像序列。
对解决此问题的最佳方法有任何想法吗?似乎我应该使用StorageItemsQuery类之类的东西,但不确定这是否是最好的方法,也不知道如何去做。
感谢您的任何帮助,您可以提供!
我正在使用以下内容来获取不带帧号的图像序列名称:
输入文件路径 C:\Users\Me\Desktop\MyImageSequenceFolder\MyImageSequence_00001.png
string input = Path.GetFileNameWithoutExtension(fileFromImageSequence.Path);
string pattern = @"\d+$";
string replacement = "";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
sequenceName = result.TrimEnd('_');
sequenceName 输出为“MyImageSequence”