将位图转换为ImageSource会产生NullReference异常

时间:2014-04-19 21:45:52

标签: c# .net wcf stream aforge

我有WCF服务将图像作为流发送到客户端应用。 我的客户端应用获取流:

 Stream imageStream = client.GetImage();

当我使用此代码时:

imageStream.CopyTo(stream);
int size = (int)stream.Length;
stream.Seek(0, SeekOrigin.Begin);
BitmapFrame bf = BitmapFrame.Create(stream,
    BitmapCreateOptions.None,
    BitmapCacheOption.OnLoad);
cam_img.Source = bf;

它工作正常,但我需要在分配到源之前对图像应用一些过滤器。 所以我需要位图。首先,我将Stream imageStream转换为字节数组,然后使用我在论坛上找到的一些代码:

byte[] tab_img;
using (var memoryStream = new MemoryStream())
{
    imageStream.CopyTo(memoryStream);
    tab_img= memoryStream.ToArray();
}

Bitmap bm;
using (MemoryStream mStream = new MemoryStream())
{
    mStream.Write (tab_img, 0, tab_img.Length);
    mStream.Seek(0, SeekOrigin.Begin);

    bm = new Bitmap(mStream);

    Grayscale filter = new Grayscale(0.2125, 0.7154, 0.0721);
    Bitmap bm_post = filter.Apply(bm);

    ImageSourceConverter c = new ImageSourceConverter();


    object source = new ImageSourceConverter().ConvertFrom(bm_post);
    ImageSource is1 = (ImageSource)source;
    cam_img.Source = is1;
}

但我仍然排在NullReferenceException

object source = new ImageSourceConverter().ConvertFrom(bm_post);

0 个答案:

没有答案