将Image转换为字节数组并将其传递给web api以在服务器上保存图像

时间:2016-10-01 09:54:36

标签: c# asp.net-web-api

我想在字节数组中转换图像并将其传递给web api以在服务器上保存图像并在数据库中保存图像名称。

我已经完成了以下代码,但当我使用此块时,参数无效会出现异常 -

byte[] param contains byte array value of image from request url
     using (var ms = new System.IO.MemoryStream(param))
                    {
                        var cd= Image.FromStream(ms);
     //...
                    }

 using (var ms = new System.IO.MemoryStream(param))
                    {
                        var Image= Image.FromStream(ms);
     //...
                    }

我已尝试过在搜索中找到的解决方案,但发生了同样的错误。

任何人都可以帮我解决此错误。

1 个答案:

答案 0 :(得分:0)

这完全取决于param到底是什么:

  1. 原始像素数据?

    您应该阅读this answer

  2. 图片文件?

    您的代码应该有效。你得到的错误可能是因为它不是。

  3. 序列化图片?

    在这种情况下,您需要使用Binary格式化程序。您可以在System.Runtime.Serialization.Formatters.Binary命名空间中找到一个。

    要从byte[]缓冲区获取图像,您需要执行以下操作:

    Image deserializedImage = null;
    
    using (var memoryStream = new MemoryStream(bytes, false))
    {
        deserializedImage = (Image)formatter.Deserialize(memoryStream);
    }
    
  4. 如果这些选项都不起作用,那么您需要调查param生成的确切内容及其包含的数据。