//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,0,(int)buffer.Length);
//Byte[]转Ibuffer
IBuffer buffer = WindowsRuntimeBufferExtensions.AsBuffer(bytes,0,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,0,(int)memoryStream.Length);
//Ibuffer转byte[]
byte[] bytes=WindowsRuntimeBufferExtensions.ToArray(buffer,0,(int)buffer.Length);
//Byte[]转Ibuffer
WindowsRuntimeBufferExtensions.AsBuffer(bytes,0,bytes.Length);
//Ibuffer转IrandomAccessStream
InMemoryRandomAccessStream inStream = new InMemoryRandomAccessStream();
DataWriter datawriter = new DataWriter(inStream.GetOutputStreamAt(0));
datawriter.WriteBuffer(buffer,0,buffer.Length);
await datawriter.StoreAsync();
//IrandomAccessStream转Ibuffer
Stream stream=WindowsRuntimeStreamExtensions.AsStreamForRead(randomStream.GetInputStreamAt(0));
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,0,(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(0);
IBuffer buffer = WindowsRuntimeBufferExtensions.AsBuffer(pixeByte, 0, pixeByte.Length);
await stream.WriteAsync(buffer);
BitmapImage image = new BitmapImage();
image.SetSource(stream);
return image;
}
}