Windows 8 如何在windows 8 metro应用程序c的设备中存储保存缩略图图像#

Windows 8 如何在windows 8 metro应用程序c的设备中存储保存缩略图图像#,windows-8,windows-runtime,microsoft-metro,winrt-xaml,bitmapimage,Windows 8,Windows Runtime,Microsoft Metro,Winrt Xaml,Bitmapimage,我创建缩略图和显示在框架中使用此代码 平台->使用c#的Windows8 metro应用程序 在windows 8 metro应用程序中使用c#。我需要保存或存储(在设备中)运行时创建的缩略图。在constants.cs类文件的DisplayResult()中,我需要将该图像保存到设备中,以了解如何实现这一点。请给我一些想法或例子,我是一个非常新的移动和从来没有工作的图像和缩略图的一部分。提前谢谢。试试这个。下面的代码将把拾取的音频文件的相册艺术保存在TempFolder中 private a

我创建缩略图和显示在框架中使用此代码

平台->使用c#的Windows8 metro应用程序


在windows 8 metro应用程序中使用c#。我需要保存或存储(在设备中)运行时创建的缩略图。在constants.cs类文件的DisplayResult()中,我需要将该图像保存到设备中,以了解如何实现这一点。请给我一些想法或例子,我是一个非常新的移动和从来没有工作的图像和缩略图的一部分。提前谢谢。

试试这个。下面的代码将把拾取的音频文件的相册艺术保存在TempFolder中

private async void btnPickFile\u单击(对象发送方,RoutedEventArgs e)
{
字符串[]音乐=新字符串[]{.mp3“,.wma“,.m4a“,.aac”};
FileOpenPicker openPicker=新的FileOpenPicker();
foreach(音乐中的字符串扩展)
{
openPicker.FileTypeFilter.Add(扩展名);
}
StorageFile文件=等待openPicker.PickSingleFileAsync();
如果(文件!=null)
{
等待保存缩略图(“mysongtumb.png”,文件);
}
}
专用异步任务SaveThumbnail(字符串ThumbnailName,StorageFile文件)
{
如果(文件!=null)
{
使用(StorageItemThumbnail-thumbnail=wait file.GetThumbnailAsync(ThumbnailMode.MusicView,100))
{
if(thumbnail!=null&&thumbnail.Type==ThumbnailType.Image)
{
var destinationFile=wait ApplicationData.Current.TemporaryFolder.CreateFileAsync(ThumbnailName,CreationCollisionOption.GenerateUniqueName);
Windows.Storage.Streams.Buffer MyBuffer=新的Windows.Storage.Streams.Buffer(Convert.ToUInt32(thumbnail.Size));
IBuffer iBuf=等待缩略图.ReadAsync(MyBuffer,MyBuffer.Capacity,InputStreamOptions.None);
使用(var strm=await destinationFile.OpenAsync(FileAccessMode.ReadWrite))
{
等待strm.WriteAsync(iBuf);
}
}
}
}
}
更新1

private async Task SaveThumbnail(StorageItemThumbnail objThumbnail)
{
if(objThumbnail!=null&&objThumbnail.Type==ThumbnailType.Image)
{
var picker=new FileSavePicker();
picker.SuggestedStartLocation=PickerLocationId.PicturesLibrary;
添加(“JPEG图像”,新字符串[]{.jpg”});
添加(“PNG图像”,新字符串[]{.PNG”});
StorageFile destinationFile=Wait picker.PickSaveFileAsync();
if(destinationFile!=null)
{
Windows.Storage.Streams.Buffer MyBuffer=新的Windows.Storage.Streams.Buffer(Convert.ToUInt32(objThumbnail.Size));
IBuffer iBuf=await objThumbnail.ReadAsync(MyBuffer,MyBuffer.Capacity,InputStreamOptions.None);
使用(var strm=await destinationFile.OpenAsync(FileAccessMode.ReadWrite))
{
等待strm.WriteAsync(iBuf);
}
}
返回目标文件;
}
其他的
{
返回null;
}
}

thanx xyroid,您的代码帮助很大,但问题是我不需要再次选择该文件,因为我已经创建了该文件的缩略图。我尝试在不使用openPicker的情况下修改您的代码,但没有成功。如果StorageFile和savePicker而不是openPicker对象,那么我们可以使用StorageFolder吗?我还想将保存TumbMail的位置指定给savePicker选择的位置。为了找到这样的选项,我做了很多选择,但没有得到任何帮助。因此,您已经有了
StorageItemThumbnail
对象,并且希望通过
SavePicker
保存它?对,您是对的。我已经有了StorageItemThumbnail对象,希望将其保存在设备中。太好了,非常感谢您的回复。这是非常有用的。实际上,我想将这些Tumbnail存储在我的c#/xaml metro应用程序的sqlite数据库中。我请求您告诉我如何实现这一点,期待您的响应……您可以将其存储为sqlite中的字节数组。您还可以将图像保存在本地应用程序文件夹中,并将文件名保存在数据库中。