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

本文关键字:RGB 全部 像素 byte 转换 | 更新日期: 2023-09-27 18:22:43

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

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

替换:

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()调用无效。