【问题标题】:How Get ALL photos with out filepicker如何在没有文件选择器的情况下获取所有照片
【发布时间】:2015-01-06 06:31:34
【问题描述】:

我正在制作一个简单的 windows phone 8.1 应用程序,我想在应用程序中显示所有照片,然后用户选择 PickMultipleFilesAndContinue ..... 但我不知道该怎么做。我做了这个代码 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.";
            }

    }

通过这个我只得到选定的照片。我希望全部显示,然后用户从中选择.....

【问题讨论】:

    标签: c# windows-runtime windows-phone-8.1


    【解决方案1】:

    您可以通过编程方式访问照片,然后将它们添加到您的 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);
            }
        }
    }
    

    【讨论】:

    • 我不想单独添加它们.. 我在这里发布的代码工作正常,并在 ImageCollection 中添加图片,但在 imageCollection 中显示所有 camra 滚动图片然后用户选择它.. 我不想要用户进入相机滚动
    • @AS Khan 也许我写得不好。您不必单独添加照片,代码会自动添加。而不是使用listView.Items.Add(image);,您可以使用bitmapImages.Add(bitmapImage);。看看我编辑的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2021-01-28
    • 1970-01-01
    相关资源
    最近更新 更多