使用文件选择器在图像 UI 元素中设置图片
Posted
技术标签:
【中文标题】使用文件选择器在图像 UI 元素中设置图片【英文标题】:setting picture in image UI element using file picker 【发布时间】: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
我不知道出了什么问题。
【问题讨论】:
【参考方案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.";
【讨论】:
以上是关于使用文件选择器在图像 UI 元素中设置图片的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ui 文件 QT 中设置图像,例如 QPushButton?