发布网友 发布时间:2022-05-06 07:38
共1个回答
热心网友 时间:2023-10-08 17:12
,原来的程序是用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");保存到磁盘 图片显示正常。高手帮忙啊!!!!先谢过了!