分享

Windows 8 各类转换心得笔记

 牛人的尾巴 2015-12-01

Windows 8 各类转换心得笔记

(2012-12-18 13:20:02)
标签:

杂谈

        //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;
            }
        }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多