如何将C#图像转换为Monotouch

时间:2012-05-23 11:20:32

标签: image xamarin.ios uiimage

我从monotouch通过wcf连接到我的windows c#主机,并希望将图像流回单声道,以便我可以显示它。

我的图像保存在System.Drawing.Image对象中,该对象在monotouch中不可用(它使用UIImage)。

我希望将主机上的Image转换为如此字符串:

        Image im = Image.FromFile(path);
        MemoryStream ms = new MemoryStream();
        im.Save(ms, im.RawFormat);
        byte[] array = ms.ToArray();
        return Convert.ToBase64String(array);

然后在MonoTouch中使用相反的方法再次获取我的Image:

        byte[] array = Convert.FromBase64String(imageString);
        Image image = Image.FromStream(new MemoryStream(array));
        return image;

这在'纯'.net环境中工作正常,但monotouch无法识别Image对象,因此它在此端失败。 如何将byte []转换回UIImage?

我尝试过这样的事情:

  UIImage img = (UIImage)UIImage.FromObject(bytes);

无济于事......

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

不要传递im.RawFormat,而是尝试使用以下之一:

  • ImageFormat.Bmp
  • ImageFormat.Png

取决于图像通常采用的格式。这些内容位于System.Drawing.Imagingsee here

这可能会给其他客户端应用程序带来麻烦,我建议让客户端发送一些东西来确定服务器返回的格式。