我正在做一个项目,其中有一个DICOM内置类给我ImageSource,我想在我的Silverlight ImageSource控件中使用该Image。我正在通过WCF服务进行此转换。我发现WCF不支持ImageSource,因此我需要将内置类的输出转换为Image或byte []。这样我就可以将该输出发送到Silverlight,并在Silverlight客户端中将其重新转换为ImageSource并可以轻松地将其分配给Image Control。

我用谷歌搜索,但没有找到任何帮助。任何人都可以帮助我解决此问题或提供任何替代解决方案。任何帮助将不胜感激,在此先感谢。

注意:-我没有对内置类进行代码修改的任何权限。作为其第三方图书馆。

更新:-
简要描述;简介:
我有一个叫GetImageSource的类,其中有一个叫giveImgSource()的方法。现在我的问题是:
在WCF中,我必须调用此方法,并且从该方法获取ImageSource后,需要将其传递给我的silverlight客户端。由于WCF不了解ImageSource,因此我需要将此方法的输出转换为以下内容中的某个或您知道的任何其他方式:

byte[]
Image
FileStream
MemoryStream etc

最佳答案

是png图片吗?然后使用它转换为byte []:

var image = (BitmapSource)value;
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(image));
using (var ms = new MemoryStream())
{
    encoder.Save(ms);
    return ms.ToArray();
}


更新:
解码:

var bytes = (byte[])value;

var image = new BitmapImage();
image.BeginInit();

if (bytes == null)
{
    // Processing null case
}
else
{
    using (var ms = new MemoryStream(bytes))
    {
        image.CacheOption = BitmapCacheOption.OnLoad;
        image.StreamSource = ms;

        image.EndInit();
    }
}

return image;

关于c# - 如何在C#中将类型'system.windows.media.imagesource'转换为'system.drawing.image'或byte []?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11932346/

10-09 13:39