美文网首页
BitmapSource to byte[] 互转

BitmapSource to byte[] 互转

作者: 残月星辰梦 | 来源:发表于2018-12-03 19:36 被阅读0次
            private static BitmapImage ConvertToBitmap(byte[] bytes)
            {
                var bitmapImage = new BitmapImage();
                bitmapImage.BeginInit();
                bitmapImage.StreamSource = new MemoryStream(bytes);
                bitmapImage.EndInit();
                return bitmapImage;
            }
            private byte[] ConvertToBytes(BitmapSource bitmapSource)
            {
                byte[] buffer = null;
                JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                MemoryStream memoryStream = new MemoryStream();
                encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
                encoder.Save(memoryStream);
                memoryStream.Position = 0;
                if (memoryStream.Length > 0)
                {
                    using (BinaryReader br = new BinaryReader(memoryStream))
                    {
                        buffer = br.ReadBytes((int)memoryStream.Length);
                    }
                }
                memoryStream.Close();
                return buffer;
            }
            private static BitmapImage ConvertToBitmap(BitmapSource bitmapSource)
            {
                JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                MemoryStream memoryStream = new MemoryStream();
                BitmapImage bImg = new BitmapImage();
                encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
                encoder.Save(memoryStream);
                memoryStream.Position = 0;
                bImg.BeginInit();
                bImg.StreamSource = memoryStream;
                bImg.EndInit();
                memoryStream.Close();
                return bImg;
            }
            public static byte[] BitmapImageToBytes(BitmapImage bmp)
            {
                byte[] buffer = null;
                try
                {
                    Stream stream = bmp.StreamSource;
                    if (stream != null && stream.Length > 0)
                    {
                        //很重要,因为Position经常位于Stream的末尾,导致下面读取到的长度为0。   
                        stream.Position = 0;
                        using (BinaryReader br = new BinaryReader(stream))
                        {
                            buffer = br.ReadBytes((int)stream.Length);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                return buffer;
            }
    

    相关文章

      网友评论

          本文标题:BitmapSource to byte[] 互转

          本文链接:https://www.haomeiwen.com/subject/ijyycqtx.html