我有一个byte[]
的图像,它直接从图像本身读取,我试图将此byte []转换为Bitmap
对象。
我正在使用代码:
var provider = new MultipartMemoryStreamProvider();
var multipart = Request.Content.ReadAsMultipartAsync(provider).ContinueWith(t => {
foreach (var item in provider.Contents) {
var filename = item.Headers.ContentDisposition.FileName.Trim('\"');
var buffer = item.ReadAsByteArrayAsync();
MemoryStream mss = new MemoryStream(buffer.Result);
Bitmap bmpImage = (Bitmap)Image.FromStream(mss);
//bmpImage.GetPixel(10,10) returns ARGB values of 255,255,255,255
}
});
但是,当我拨打bmpImage.GetPixel(10,10)
时,ARGB值为255,255,255,255
。这对我来说毫无意义。有没有人有任何想法为什么这种转换可能导致我的像素信息丢失?
以上代码包含在ApiController
Post()
方法中:
public async Task<IHttpActionResult> Post()
答案 0 :(得分:0)
更换:
var buffer = item.ReadAsByteArrayAsync();
MemoryStream mss = new MemoryStream(buffer.Result);
Bitmap bmpImage = (Bitmap)Image.FromStream(mss);
使用:
Stream stream = item.ReadAsStreamAsync().Result;
Bitmap bmpImage = (Bitmap)Image.FromStream(stream);
做了这个伎俩。我最初没有看到为什么第二个有效,第一个没有,但ReadAsStreamAsync()
调用有效而ReadAsByteArrayAsync()
没有。