Согласно this, следующий код может быть использован для преобразования массива байтов в BitmapImage:Почему я получаю «System.Array» не содержит определения для «AsBuffer» с этим кодом WinRT?
public static async Task<BitmapImage> ByteArrayToBitmapImage(this byte[] byteArray)
{
if (byteArray != null)
{
using (var stream = new InMemoryRandomAccessStream())
{
await stream.WriteAsync(byteArray.AsBuffer());
var image = new BitmapImage();
stream.Seek(0);
image.SetSource(stream);
return image;
}
}
return null;
}
Однако, я получаю, "„System.Array“не содержит определения для„AsBuffer“и не может быть найден метод расширения «AsBuffer», принимающий первый аргумент типа «System.Array» (вам не хватает директивы использования или ссылки на сборку?) «
Является ли это то, что назначение« var stream »тоже неопределенный (неявный ввод), и мне нужно указать конкретный тип данных для «потока» var? Что-то другое, чем System.Array?
Может быть, это из "Windows Store Apps Succinctly" является ключом: Буферы/массивы байтов-System.Runtime.InteropServices.WindowsRuntime. WindowsRuntimeBufferExtensions: методы расширения этого класса предоставляют способы перемещения между массивами байт .NET и содержимым буферов WinRT, которые отображаются как реализации IBuffer.
... но если это так, для меня недостаточно информации, чтобы знать, что с этим делать. Вместо «TMI» это «NEI» (недостаточно информации).
Я пытался добавить Reference, но получил сообщение об ошибке, которое нельзя добавить, поскольку оно автоматически ссылается на систему сборки. Поэтому я добавил оператор using и компилирует его. Поэтому меня удивляет, если нужная ссылка уже существует, почему VS не знает этого и дает мне пункт контекстного меню «Resolve»? Во всяком случае, все хорошо, что хорошо кончается, я думаю - спасибо! –