WPF中 通过socket 接收到的 JPG 二进制流如何转成 Image.Source

 我来答
梦FPL
2013-08-25 · 超过94用户采纳过TA的回答
知道答主
回答量:175
采纳率:100%
帮助的人:81.4万
展开全部
,原来的程序是用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");保存到磁盘 图片显示正常。高手帮忙啊!!!!先谢过了!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式