从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()
替换:
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()
调用无效。