无法使用 UWP 中的 FromFile 路径加载图像
Can't load image with path from FromFile in UWP
我正在为 Android 和 UWP 开发应用程序。在一个屏幕上,我需要从设备文件系统加载图像并显示它。奇怪的是,它在 Android 上完美运行,但在 UWP 上却不行。 FilePicker 似乎正确返回了路径...
我的XAML
<Image Grid.Row="0" Grid.Column="0"
Source="{Binding NewImage}" Margin="10,10,10,10" Aspect="AspectFit"
VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" />
我使用的图片来源
private FileImageSource _newImage;
public FileImageSource NewImage
{
get { return _newImage; }
set
{
_newImage = value;
OnPropertyChanged(nameof(NewImage));
}
}
加载图片和设置路径的函数
private async void OnAddImage()
{
string[] types = { ".jpg", ".png" };
FileData temp = await CrossFilePicker.Current.PickFile(types);
if (temp == null)
{
return;
}
Debug.WriteLine($"ImagePath: {temp.FilePath}");
Debug.WriteLine($"ImageName: {temp.FileName}");
NewEntry.ImagePath = temp.FilePath;
NewImage = (FileImageSource)ImageSource.FromFile(temp.FilePath);
}
当您使用文件选取器在 UWP 上选取图像时,这些图像可能存储在外部磁盘上。我们只能使用一个路径来加载项目中嵌入的文件或UWP上存储在本地存储中的文件:https://blogs.msdn.microsoft.com/wsdevsol/2012/12/04/skip-the-path-stick-to-the-storagefile/
所以调整你的加载事件:
string[] types = { ".jpg", ".png" };
FileData temp = await CrossFilePicker.Current.PickFile(types);
if (temp == null)
{
return;
}
Debug.WriteLine($"ImagePath: {temp.FilePath}");
Debug.WriteLine($"ImageName: {temp.FileName}");
//NewEntry.ImagePath = temp.FilePath;
NewImage = (StreamImageSource)ImageSource.FromStream(() => temp.GetStream());
// Property
private StreamImageSource _newImage;
public StreamImageSource NewImage
{
get { return _newImage; }
set
{
_newImage = value;
OnPropertyChanged(nameof(NewImage));
}
}
这也适用于 Android。
我正在为 Android 和 UWP 开发应用程序。在一个屏幕上,我需要从设备文件系统加载图像并显示它。奇怪的是,它在 Android 上完美运行,但在 UWP 上却不行。 FilePicker 似乎正确返回了路径...
我的XAML
<Image Grid.Row="0" Grid.Column="0"
Source="{Binding NewImage}" Margin="10,10,10,10" Aspect="AspectFit"
VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" />
我使用的图片来源
private FileImageSource _newImage;
public FileImageSource NewImage
{
get { return _newImage; }
set
{
_newImage = value;
OnPropertyChanged(nameof(NewImage));
}
}
加载图片和设置路径的函数
private async void OnAddImage()
{
string[] types = { ".jpg", ".png" };
FileData temp = await CrossFilePicker.Current.PickFile(types);
if (temp == null)
{
return;
}
Debug.WriteLine($"ImagePath: {temp.FilePath}");
Debug.WriteLine($"ImageName: {temp.FileName}");
NewEntry.ImagePath = temp.FilePath;
NewImage = (FileImageSource)ImageSource.FromFile(temp.FilePath);
}
当您使用文件选取器在 UWP 上选取图像时,这些图像可能存储在外部磁盘上。我们只能使用一个路径来加载项目中嵌入的文件或UWP上存储在本地存储中的文件:https://blogs.msdn.microsoft.com/wsdevsol/2012/12/04/skip-the-path-stick-to-the-storagefile/
所以调整你的加载事件:
string[] types = { ".jpg", ".png" };
FileData temp = await CrossFilePicker.Current.PickFile(types);
if (temp == null)
{
return;
}
Debug.WriteLine($"ImagePath: {temp.FilePath}");
Debug.WriteLine($"ImageName: {temp.FileName}");
//NewEntry.ImagePath = temp.FilePath;
NewImage = (StreamImageSource)ImageSource.FromStream(() => temp.GetStream());
// Property
private StreamImageSource _newImage;
public StreamImageSource NewImage
{
get { return _newImage; }
set
{
_newImage = value;
OnPropertyChanged(nameof(NewImage));
}
}
这也适用于 Android。