从byte []转换后,像素RGB值全部为255

时间:2014-09-19 03:49:46

标签: c# bitmap

我有一个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()

1 个答案:

答案 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()没有。