我有以下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#Web API中我正在做以下
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字符串的图像数据
但是我遇到了异常
参数无效。
at System.Drawing.Image.FromStream(Stream stream,Boolean useEmbeddedColorManagement,Boolean validateImageData)at System.Drawing.Image.FromStream(Stream stream)at TWebApiSearch.Controllers.UploadController.ImageToDir(TRequest json) 在 C:\ Users \用户tahmid \下载\ APIWeb \ TWebApiSearch \ \控制器UploadController.cs:行 53
在Web API C#
中的这一行Image image = Image.FromStream(ms,true);
此错误的原因是什么?
答案 0 :(得分:2)
您正在加载内存流两次。一旦你初始化它
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"]);