Windows 8各种流之间的转换
2024-09-01 01:50:39
//String 转 Buffer
private IBuffer GetBufferFromString(String str)
{
using (InMemoryRandomAccessStream memoryStream = new InMemoryRandomAccessStream())
{
using (DataWriter dataWriter = new DataWriter(memoryStream))
{
dataWriter.WriteString(str);
return dataWriter.DetachBuffer();
}
}
} //Buffer 转 String
private String GetStringFromBuffer(IBuffer buffer)
{
using (DataReader dataReader = DataReader.FromBuffer(buffer))
{
return dataReader.ReadString(buffer.Length);
}
} //Stream 转 IInputStream IInputStream inputStream = stream.AsInputStream(); //IInputStream 转 Stream stream = inputStream.AsStreamForRead(); //Stream 转 IOutputStream IOutputStream outputStream = stream.AsOutputStream(); //IOutputStream 转 Stream stream = outputStream.AsStreamForRead(); //Stream 转 IRandomAccessStream IBuffer buffer = null; var inputstream = stream.AsInputStream(); using (var dataReader = new DataReader(inputstream)) { await dataReader.LoadAsync((uint)stream.Length); buffer = dataReader.DetachBuffer(); } var iRandomAccessStream = new InMemoryRandomAccessStream(); await iRandomAccessStream.WriteAsync(buffer); // IRandomAccessStream 转 Stream stream = iRandomAccessStream.AsStream(); //Ibuffer转byte[] byte[] bytes = WindowsRuntimeBufferExtensions.ToArray(buffer,,(int)buffer.Length); //Byte[]转Ibuffer IBuffer buffer = WindowsRuntimeBufferExtensions.AsBuffer(bytes,,bytes.Length); //Ibuffer转Stream Stream stream = WindowsRuntimeBufferExtensions.AsStream(buffer); //Stream转Ibuffer MemoryStream memoryStream = new MemoryStream(); if (stream != null) { byte[] bytes = ReadFully(stream); if (bytes != null) { var binaryWriter = new BinaryWriter(memoryStream); binaryWriter.Write(bytes); } } IBuffer buffer=WindowsRuntimeBufferExtensions.GetWindowsRuntimeBuffer(memoryStream,,(int)memoryStream.Length); //Ibuffer转byte[] byte[] bytes=WindowsRuntimeBufferExtensions.ToArray(buffer,,(int)buffer.Length); //Byte[]转Ibuffer WindowsRuntimeBufferExtensions.AsBuffer(bytes,,bytes.Length); //Ibuffer转IrandomAccessStream InMemoryRandomAccessStream inStream = new InMemoryRandomAccessStream(); DataWriter datawriter = new DataWriter(inStream.GetOutputStreamAt()); datawriter.WriteBuffer(buffer,,buffer.Length); await datawriter.StoreAsync(); //IrandomAccessStream转Ibuffer Stream stream=WindowsRuntimeStreamExtensions.AsStreamForRead(randomStream.GetInputStreamAt()); MemoryStream memoryStream = new MemoryStream(); if (stream != null) { byte[] bytes = await ConvertStreamTobyte(stream); if (bytes != null) { var binaryWriter = new BinaryWriter(memoryStream); binaryWriter.Write(bytes); } } IBuffer buffer=WindowsRuntimeBufferExtensions.GetWindowsRuntimeBuffer(memoryStream,,(int)memoryStream.Length); //Stream转byte[] public async Task<byte[]> ConvertStreamTobyte(Stream stream) { MemoryStream ms = new MemoryStream(); await stream.CopyToAsync(ms); return ms.ToArray(); } //Byte转Stream public Stream BytesToStream(byte[] bytes) { Stream stream = new MemoryStream(bytes); return stream; } //Byte[] -> BitmapImage public async Task<BitmapImage> ByteArrayToImageAsync(byte[] pixeByte) { using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream()) { stream.Seek(); IBuffer buffer = WindowsRuntimeBufferExtensions.AsBuffer(pixeByte, , pixeByte.Length); await stream.WriteAsync(buffer); BitmapImage image = new BitmapImage(); image.SetSource(stream); return image; } }
最新文章
- 用Myisamchk让MySQL数据表更健康
- Java中的路径问题
- (转)PHP ob_start() 函数介绍
- Sogou搜狗搜索引擎登录网站 - Blog透视镜
- [POJ] String Matching
- 最常用的缓存技术---redis入门
- CSS实现自适应不同大小屏幕的背景大图
- S0.4 二值图与阈值化
- 01 jmeter性能测试系列_Jmeter的体系结构
- css利用padding百分比实现图片自适应高度
- nltk的使用
- JSP九大内置对象辨析
- Java编程的逻辑 (33) - Joda-Time
- C#深入浅出获取时间DateTime
- Weblogic申请和配置SSL证书
- Robot Framework 教程 (1) - 环境配置及简单网站兼容性测试
- c#开发Android初学(一)
- Linux rpm yum 等安装软件
- js 光标选中 操作
- java 重写 与 重载 用法