C# 如何将UlImage作为Base64字符串传递给Asp.Net Web Api

C# 如何将UlImage作为Base64字符串传递给Asp.Net Web Api,c#,ios,asp.net-web-api,swift3,C#,Ios,Asp.net Web Api,Swift3,我有iOS 10 Swift 3的以下代码 if let pic = info[UIImagePickerControllerOriginalImage] as? UIImage { let sss = UIImagePNGRepresentation(pic)! as NSData let s1 = sss.base64EncodedString(options: .lineLength64Characters) // api call ..... } 在C#WebA

我有iOS 10 Swift 3的以下代码

if let pic = info[UIImagePickerControllerOriginalImage] as? UIImage {
    let sss = UIImagePNGRepresentation(pic)! as NSData
    let s1 = sss.base64EncodedString(options: .lineLength64Characters)
    // api call .....
}
在C#WebAPI中,我做了以下工作

byte[] imageBytes = Convert.FromBase64String(defultdr["@imageString"]);
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
Image image = Image.FromStream(ms,true);
image.Save(ImageDirPath + defultdr["@imageName"]);
其中
defultdr[“@imageString”]
包含来自iOS Wwift 3的Base64字符串形式的图像数据

但我有以下例外

参数无效

在System.Drawing.Image.FromStream(Stream-Stream,布尔值 使用EmbeddedColorManagement,Boolean validateImageData)在 System.Drawing.Image.FromStream(Stream-Stream)位于 TWebApiSearch.Controllers.UploadController.ImageToDir(TRequest json) 在里面 C:\Users\tahmid\Downloads\APIWeb\twebaisearch\Controllers\UploadController.cs:line 五十三

在WebAPI C中的这一行#


此错误的原因是什么?

您正在加载两次内存流。一次,当你初始化它的时候

MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
第二,当你写作的时候

ms.Write(imageBytes, 0, imageBytes.Length);
不需要第二个,因为在使用字节数组初始化内存流缓冲区时,您已经加载了它

试试这个

var imageBytes = Convert.FromBase64String(defultdr["@imageString"]);
var ms = new MemoryStream(imageBytes);
var image = Image.FromStream(ms,true);
image.Save(ImageDirPath + defultdr["@imageName"]);
var imageBytes = Convert.FromBase64String(defultdr["@imageString"]);
var ms = new MemoryStream(imageBytes);
var image = Image.FromStream(ms,true);
image.Save(ImageDirPath + defultdr["@imageName"]);