C# 如何使用文件选择器获取所有照片
我正在制作一个简单的Windows phone 8.1应用程序,我想在应用程序中显示所有照片,然后用户选择PickMultipleFiles并继续。。。。。但是我不知道怎么做。我让这个代码openfiler选择器带我去电话库。。。。。在windows phone 8.1中是否有其他方式获取照片C# 如何使用文件选择器获取所有照片,c#,windows-runtime,windows-phone-8.1,C#,Windows Runtime,Windows Phone 8.1,我正在制作一个简单的Windows phone 8.1应用程序,我想在应用程序中显示所有照片,然后用户选择PickMultipleFiles并继续。。。。。但是我不知道怎么做。我让这个代码openfiler选择器带我去电话库。。。。。在windows phone 8.1中是否有其他方式获取照片 FileOpenPicker openPicker = new FileOpenPicker(); openPicker.ViewMode = PickerViewMode
FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
openPicker.FileTypeFilter.Add(".jpg");
openPicker.FileTypeFilter.Add(".jpeg");
openPicker.FileTypeFilter.Add(".png");
openPicker.PickMultipleFilesAndContinue();
view.Activated += view_Activated;
}
private async void view_Activated(CoreApplicationView sender, Windows.ApplicationModel.Activation.IActivatedEventArgs args1)
{
FileOpenPickerContinuationEventArgs args = args1 as FileOpenPickerContinuationEventArgs;
bitmapImages = new ObservableCollection<BitmapImage>();
IReadOnlyList<StorageFile> files = args.Files;
if (files.Count > 0)
{
StringBuilder output = new StringBuilder("Picked files:\n");
// Application now has read/write access to the picked file(s)
foreach (StorageFile file in files)
{
output.Append(file.Name + "\n");
using (var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
try
{
BitmapImage bitmapImage = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
bitmapImage.DecodePixelHeight = 200;
bitmapImage.SetSource(stream);
bitmapImages.Add(bitmapImage);
}
catch (ArgumentException Ex)
{
Debug.WriteLine("Exception ", Ex.Message);
}
}
}
ImageCollection.ItemsSource = bitmapImages;
OutputTextBlock.Text = output.ToString();
}
else
{
OutputTextBlock.Text = "Operation cancelled.";
}
}
FileOpenPicker-openPicker=newfileopenpicker();
openPicker.ViewMode=PickerViewMode.缩略图;
openPicker.SuggestedStartLocation=PickerLocationId.PicturesLibrary;
openPicker.FileTypeFilter.Add(“.jpg”);
openPicker.FileTypeFilter.Add(“.jpeg”);
openPicker.FileTypeFilter.Add(“.png”);
openPicker.pickMultipleFileAndContinue();
view.Activated+=view\u Activated;
}
已激活专用异步无效视图(CoreApplicationView发送方,Windows.ApplicationModel.Activation.IActivatedEventArgs args1)
{
FileOpenPickerContinuationEventArgs args=args1作为FileOpenPickerContinuationEventArgs;
bitmapImages=新的ObservableCollection();
IReadOnlyList files=args.files;
如果(files.Count>0)
{
StringBuilder输出=新建StringBuilder(“拾取的文件:\n”);
//应用程序现在对拾取的文件具有读/写访问权限
foreach(文件中的存储文件)
{
output.Append(file.Name+“\n”);
使用(var stream=await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
尝试
{
BitmapImage BitmapImage=new Windows.UI.Xaml.Media.Imaging.BitmapImage();
bitmapImage.DecodePixelHeight=200;
bitmapImage.SetSource(流);
添加(位图图像);
}
捕获(参数异常)
{
Debug.WriteLine(“异常”,例如消息);
}
}
}
ImageCollection.ItemsSource=位图图像;
OutputTextBlock.Text=output.ToString();
}
其他的
{
OutputExtBlock.Text=“操作已取消。”;
}
}
通过此im仅获取选定的照片。我希望显示所有照片,然后用户从中选择……您可以通过编程方式访问这些照片,然后将它们添加到您的ImageCollection中。我已经调整了照片的大小,否则应用程序会在我的手机上崩溃
StorageFolder pictureFolder = KnownFolders.PicturesLibrary; //or another folder
IReadOnlyList<IStorageItem> nameList = await pictureFolder.GetItemsAsync();
var bitmapImages = new ObservableCollection<BitmapImage>();
foreach (var item in nameList)
{
if (item is StorageFile)
{
if (item.Name.Substring(item.Name.Length - 4, 3).ToLower() == "jpeg" || item.Name.Substring(item.Name.Length - 3, 3).ToLower() == "jpg" || item.Name.Substring(item.Name.Length - 3, 3).ToLower() == "png")
{
Image image = new Image();
StorageFile file = await pictureFolder.GetFileAsync(item.Name);
IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(fileStream);
if (bitmapImage.DecodePixelHeight >= bitmapImage.DecodePixelWidth)
{
bitmapImage.DecodePixelWidth = bitmapImage.DecodePixelHeight / 100;
bitmapImage.DecodePixelHeight = 100;
}
else
{
bitmapImage.DecodePixelHeight = bitmapImage.DecodePixelWidth / 100;
bitmapImage.DecodePixelWidth = 100;
}
bitmapImages.Add(bitmapImage);
}
}
}
StorageFolder pictureFolder=KnownFolders.PicturesLibrary//或其他文件夹
IReadOnlyList nameList=wait pictureFolder.GetItemsAsync();
var bitmapImages=新的ObservableCollection();
foreach(名称列表中的变量项)
{
如果(项目为StorageFile)
{
if(item.Name.Substring(item.Name.Length-4,3).ToLower()=“jpeg”| | item.Name.Substring(item.Name.Length-3,3).ToLower()=“jpg”| | item.Name.Substring(item.Name.Length-3,3).ToLower()=“png”)
{
图像=新图像();
StorageFile file=wait pictureFolder.GetFileAsync(item.Name);
irandomaccesstream fileStream=await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
BitmapImage BitmapImage=新的BitmapImage();
bitmapImage.SetSource(文件流);
如果(bitmapImage.DecodePixelHeight>=bitmapImage.DecodePixelWidth)
{
bitmapImage.DecodePixelWidth=bitmapImage.DecodePixelHeight/100;
bitmapImage.DecodePixelHeight=100;
}
其他的
{
bitmapImage.DecodePixelHeight=bitmapImage.DecodePixelWidth/100;
bitmapImage.DecodePixelWidth=100;
}
添加(位图图像);
}
}
}
我不想单独添加它们。。我在这里发布的代码工作正常,在ImageCollection中添加图片,但在ImageCollection中显示所有camra滚动图片,然后用户选择表单。。我不想让用户进入camrarolling@AS也许我写得不好。你不必单独添加照片,代码会自动添加。而不是使用listView.Items.Add(image)代码>可以使用位图图像。添加(位图图像)代码>。看看我编辑过的答案。