Windows phone 8 WP8获取媒体库中图像的URI
由于我使用自己的LongListSelector让用户从图像中进行选择,因此我需要检索Windows phone 8 WP8获取媒体库中图像的URI,windows-phone-8,uri,longlistselector,media-library,Windows Phone 8,Uri,Longlistselector,Media Library,由于我使用自己的LongListSelector让用户从图像中进行选择,因此我需要检索Medialibrary中所有图像的URI。我还找不到做这件事的任何可能性 我所看到的可能是得到图像的名称: MediaLibrary m = new MediaLibrary(); foreach (var r in m.Pictures) { Stream imageStream = r.GetImage(); } 我怎样才能走完剩下的路 编辑 遵循第一种解决方案: Gallery.xaml
Medialibrary
中所有图像的URI。我还找不到做这件事的任何可能性
我所看到的可能是得到图像的名称:
MediaLibrary m = new MediaLibrary();
foreach (var r in m.Pictures)
{
Stream imageStream = r.GetImage();
}
我怎样才能走完剩下的路
编辑
遵循第一种解决方案:
Gallery.xaml
Gallery.xaml.cs
private List<WriteableBitmap> _listOfImages = new List<WriteableBitmap>();
public List<WriteableBitmap> ListOfImages
{
get { return _listOfImages; }
set { _listOfImages = value; }
}
public Gallery()
{
InitializeComponent();
var ml = new MediaLibrary();
var Pictures = ml.Pictures;
foreach (var item in Pictures)
{
ListOfImages.Add(PictureDecoder.DecodeJpeg(item.GetImage()));
}
}
private List\u listOfImages=new List();
公共图像列表
{
获取{return\u listOfImages;}
设置{u listOfImages=value;}
}
公众席()
{
初始化组件();
var ml=新媒体库();
var图片=ml图片;
foreach(图片中的变量项)
{
添加(PicturedCoder.DecodeJpeg(item.GetImage());
}
}
导致不显示图像。调试器显示imageas已正确添加到我的列表中,但我看不到任何内容。为什么需要该路径?显示图像?如果只需要在列表中将图像显示为缩略图,则可以使用流创建
位图图像
:
var bi = new BitmapImage();
bi.SetSource(r.GetThumbnail());
现在您可以将
bi
设置为图像。Source
为什么需要路径?显示图像?如果只需要在列表中将图像显示为缩略图,则可以使用流创建位图图像
:
var bi = new BitmapImage();
bi.SetSource(r.GetThumbnail());
现在您可以将
bi
设置为图像。Source
似乎API没有公开从媒体库返回的图片的URI属性。所以你需要用不同的方法来做。例如,您可以有一个writeablebitmap
s列表,而不是URI列表:
private List<WriteableBitmap> _listOfImages = new List<WriteableBitmap>();
public List<WriteableBitmap> ListOfImages
{
get { return _listOfImages; }
set { _listOfImages = value; }
}
.......
.......
var ml = new MediaLibrary();
var Pictures = ml.Pictures;
foreach (var item in Pictures)
{
ListOfImages.Add(PictureDecoder.DecodeJpeg(item.GetImage()));
}
........
//in XAML
<phone:LongListSelector ItemsSource="{Binding ListOfImages}">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image Width="150" Height="150"
Source="{Binding}"/>
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
........
</phone:LongListSelector>
........
private List\u listOfImages=new List();
公共图像列表
{
获取{return\u listOfImages;}
设置{u listOfImages=value;}
}
.......
.......
var ml=新媒体库();
var图片=ml图片;
foreach(图片中的变量项)
{
添加(PicturedCoder.DecodeJpeg(item.GetImage());
}
........
//在XAML中
........
........
[代码改编自]API似乎没有公开从媒体库返回的图片的URI属性。所以你需要用不同的方法来做。例如,您可以有一个
writeablebitmap
s列表,而不是URI列表:
private List<WriteableBitmap> _listOfImages = new List<WriteableBitmap>();
public List<WriteableBitmap> ListOfImages
{
get { return _listOfImages; }
set { _listOfImages = value; }
}
.......
.......
var ml = new MediaLibrary();
var Pictures = ml.Pictures;
foreach (var item in Pictures)
{
ListOfImages.Add(PictureDecoder.DecodeJpeg(item.GetImage()));
}
........
//in XAML
<phone:LongListSelector ItemsSource="{Binding ListOfImages}">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image Width="150" Height="150"
Source="{Binding}"/>
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
........
</phone:LongListSelector>
........
private List\u listOfImages=new List();
公共图像列表
{
获取{return\u listOfImages;}
设置{u listOfImages=value;}
}
.......
.......
var ml=新媒体库();
var图片=ml图片;
foreach(图片中的变量项)
{
添加(PicturedCoder.DecodeJpeg(item.GetImage());
}
........
//在XAML中
........
........
[代码改编自]似乎解码工作正常,但我的列表中没有显示任何内容。我会根据您的回答更新我的问题。UI似乎不会随着ListOfImages属性的填充而更新。要解决这个问题,请尝试以下两种方法之一:1.将
列表
更改为可观察到的收集
或2。放置初始化组件()代码>在foreach
块之后。同时尝试了这两种方法,但没有在此部分中使用resultdatabinding:ItemsSource={Binding ListOfImages}
需要DataContext。尝试添加this.DataContext=this除了我以前的建议之外,在构造函数中的code>中(在InitializeComponents();
行之后的某个地方)。我现在需要将所选图片存储到IsolatedStorage中。我怎么能做到呢?似乎解码工作正常,但我的列表中没有显示任何内容。我会根据您的回答更新我的问题。UI似乎不会随着ListOfImages属性的填充而更新。要解决这个问题,请尝试以下两种方法之一:1.将列表
更改为可观察到的收集
或2。放置初始化组件()代码>在foreach
块之后。同时尝试了这两种方法,但没有在此部分中使用resultdatabinding:ItemsSource={Binding ListOfImages}
需要DataContext。尝试添加this.DataContext=this除了我以前的建议之外,在构造函数中的code>中(在InitializeComponents();
行之后的某个地方)。我现在需要将所选图片存储到IsolatedStorage中。我该怎么做?是的,我想在我的长列表中显示它。见我编辑的问题。因为我想让用户在另一个页面中编辑图片,所以我首先希望以字符串形式传递路径。但我想我必须将图像保存到隔离存储中,在视图模型中,您可以保留BitmapImage
和图像路径。然后将该路径传递到编辑页面。另外,不要使用GetImage
,而是使用GetThumbail
。是的,我想在我的长列表选择器中显示它。见我编辑的问题。因为我想让用户在另一个页面中编辑图片,所以我首先希望以字符串形式传递路径。但我想我必须将图像保存到隔离存储中,在视图模型中,您可以保留BitmapImage
和图像路径。然后将该路径传递到编辑页面。另外,不要使用GetImage
,而是使用GetThumbail
。