【问题标题】:setting picture in image UI element using file picker使用文件选择器在图像 UI 元素中设置图片
【发布时间】:2013-05-21 09:56:30
【问题描述】:

在我的应用程序中,用户可以从设备内存(即平板电脑内存或桌面本地驱动器)设置配置文件图片并将其上传到服务器。 我使用了文件选择器,以便用户可以选择一张图片并将其设置为个人资料图片,但问题是图片没有粘在 Image 元素上。 我的代码:

 private async void filePicker()
        {
            FileOpenPicker openPicker = new FileOpenPicker();
            openPicker.ViewMode = PickerViewMode.Thumbnail;
            openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
            openPicker.FileTypeFilter.Add(".jpg");
            openPicker.FileTypeFilter.Add(".jpeg");
            openPicker.FileTypeFilter.Add(".png");

            StorageFile file = await openPicker.PickSingleFileAsync();
            if (file != null)
            {

                String filePath = file.Path;
                System.Diagnostics.Debug.WriteLine(filePath);

                Uri uri = new Uri(filePath, UriKind.Relative);
                profilePicture.Source = new BitmapImage(uri);
            }
        }

        internal bool EnsureUnsnapped()
        {
            // FilePicker APIs will not work if the application is in a snapped state.
            // If an app wants to show a FilePicker while snapped, it must attempt to unsnap first
            bool unsnapped = ((ApplicationView.Value != ApplicationViewState.Snapped) || ApplicationView.TryUnsnap());
            if (!unsnapped)
            {
                //NotifyUser("Cannot unsnap the sample.", NotifyType.StatusMessage);
            }

            return unsnapped;
        }

我得到的文件路径是这个

filePath=C:\Users\Prateek\Pictures\IMG_0137.JPG

我不知道出了什么问题。

【问题讨论】:

    标签: c# image windows-8 microsoft-metro filepicker


    【解决方案1】:

    我不确定这是否能解决问题,这是我设置图像源时所做的。

    使用位图图像作为图像源

    BitmapImage bitmapimage = new BitmapImage();
    StorageFile file = await openPicker.PickSingleFileAsync();
    var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
    await bitmapimage.SetSourceAsync(stream);
    profilePicture.Source = bitmapImage;
    

    【讨论】:

      【解决方案2】:

      我用过这段代码……

              var picker = new Windows.Storage.Pickers.FileOpenPicker();
              picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
              picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
              picker.FileTypeFilter.Add(".jpg");
              picker.FileTypeFilter.Add(".jpeg");
              picker.FileTypeFilter.Add(".png");
      
              Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
              if (file != null)
              {
                  this.textBlock.Text = 
                      "File Path: " + file.Path + Environment.NewLine + 
                      "File Name: " + file.Name;
      
                  try
                  {
                      var stream = await file.OpenReadAsync();
                      var imageSource = new BitmapImage();
                      await imageSource.SetSourceAsync(stream);
      
                      this.image.Source = imageSource;
                  }
                  catch (Exception ex)
                  {
                      this.textBlock.Text = ex.ToString();
                  }
              }
              else
              {
                  this.textBlock.Text = "Operation cancelled.";
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        相关资源
        最近更新 更多