WPF中 通过socket 接收到的 JPG 二进制流如何转成 Image.Source
1个回答
展开全部
,原来的程序是用winform写的 同样的socket函数 获取到同样的二进制流,winform中直接使用 System.Drawing.Image img = System.Drawing.Image.FromStream(info.MemoryStream);然后将img对象给到 pictureBox1.Image = img;在wpf中 图片控件有所改变 使用的是 Image 对象 对应的图片属性是 Source 类型是 System.Windows.Media.ImageSource 找了一些转换方法 其中一个方法是: BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = info.MemoryStream;
image.EndInit(); 转换无效 异常是:无法对此图像进行解码。该图像头可能已损坏。我分析了一下 过来的二进制流式jpeg格式的,而 BitmapImage 字面意思应该是位图图像,所以转换失败。。后来在 System.Windows.Media.Imaging 下找到了 一个 JpegBitmapDecoder 使用方法: BitmapDecoder decoder = JpegBitmapDecoder.Create(info.MemoryStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
image1.Source = decoder.Frames[0]; 同样无效。。图片还没没有出来但是二进制流肯定是对了 我使用了 System.Drawing.Image img = System.Drawing.Image.FromStream(info.MemoryStream);
img.Save("i:\\pic\\" + DateTime.Now.Ticks + "_.jpg");保存到磁盘 图片显示正常。高手帮忙啊!!!!先谢过了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询