0

我有WriteableBitmap。我知道变量中wp1存在图像,因为我保存了这张图片,一切都很好。我需要将图像编码成一个byte[]数组。

WriteableBitmap wp1 = new WriteableBitmap(1, 1); ;
wp1.SetSourceAsync(memStream);

using (Stream stream = wp1.PixelBuffer.AsStream())
{
    if (stream.CanWrite)
    {
        byte[] pixelArray = new byte[stream.Length];
        await stream.ReadAsync(pixelArray, 0, pixelArray.Length);
    }
}

毕竟pixelArray是空的。数组pixelArray的长度等于 的长度stream,但所有字节都为零。我该怎么办?

4

2 回答 2

2

我认为你的问题是这行代码:

wp1.SetSourceAsync(memStream);

这是一种异步方法,因此您必须等到它完成后再继续。尝试将其更改为:

await wp1.SetSourceAsync(memStream);
于 2013-04-07T08:48:45.377 回答
0

如果您使用的是 WriteableBitmap Extensions,则有一种更简单的方法可以为您做到这一点,例如:var pixelDataArray = wp1.ToByteArray();

于 2013-04-07T13:20:58.107 回答