|
async private void Test()
{
StorageFile sf = await Package.Current.InstalledLocation.GetFileAsync(@"Assets\Logo.png");
InMemoryRandomAccessStream ras = new InMemoryRandomAccessStream();
using (Stream stream = await sf.OpenStreamForReadAsync())
{
await stream.CopyToAsync(ras.AsStreamForWrite());
}
BitmapImage bi = new BitmapImage();
bi.SetSource(ras);
img.Source = bi;
}
InMemoryRandomAccessStream 继承了IRandomAccessStream接口
WindowsRuntimeStorageExtensions.OpenStreamForReadAsync 方法 ()
http://msdn.microsoft.com/zh-cn/library/hh582102(VS.110).aspx
OpenStreamForReadAsync()方法是 .Net System.IO 提供给WinRT的扩展方法。
方法2:
//获取图片文件
StorageFile file = await Package.Current.InstalledLocation.GetFileAsync(@"Assets\Backgroud.jpg");
Stream stream= await file.OpenStreamForReadAsync();
byte[] bytes = ConvertStreamTobyte(stream);
InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();
//将randomAccessStream 转成 IOutputStream
var outputStream = randomAccessStream.GetOutputStreamAt(0);
//实例化一个DataWriter
DataWriter datawriter = new DataWriter(outputStream);
//将Byte数组数据写进OutputStream
datawriter.WriteBytes(bytes);
//在缓冲区提交数据到一个存储区
await datawriter.StoreAsync();
//将InMemoryRandomAccessStream给位图
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(randomAccessStream); image1.Source = bitmapImage;
public byte[] ConvertStreamTobyte(Stream stream)
{
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
|
|
|