Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用文件选择器获取所有照片_C#_Windows Runtime_Windows Phone 8.1 - Fatal编程技术网

C# 如何使用文件选择器获取所有照片

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

我正在制作一个简单的Windows phone 8.1应用程序,我想在应用程序中显示所有照片,然后用户选择PickMultipleFiles并继续。。。。。但是我不知道怎么做。我让这个代码openfiler选择器带我去电话库。。。。。在windows phone 8.1中是否有其他方式获取照片

        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)可以使用
位图图像。添加(位图图像)。看看我编辑过的答案。