Создать IRandomAccessStream из BitmapImage без CreateFromUri (UWP) - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть метод, который проверяет, является ли пиксель в указанной c точке на BitmapImage прозрачным:

       public static async Task<bool> IsPixelTransparent(Point hitPosition, BitmapImage sourceImage)
        {
            var randomStream = await RandomAccessStreamReference.CreateFromUri(sourceImage.UriSource).OpenReadAsync();
            randomStream.Seek(0);

            var decoder = await BitmapDecoder.CreateAsync(randomStream);
            var pixelData = await decoder.GetPixelDataAsync();
            var pixels = pixelData.DetachPixelData();

            var rowWidth = decoder.PixelWidth * 4;
            var rowOffset = hitPosition.Y * rowWidth;
            var colOffset = hitPosition.X * 4;
            var totalOffset = rowOffset + colOffset;

            var alpha = pixels[totalOffset + 3];

            return alpha == 0;
        }

Теперь мне нужно оптимизировать это, не загружая изображение каждый раз в память это бег. Это означает, что мне нужно создать IRandomAccessStream из BitmapImage без использования метода CreateFromUri(). Это кажется тривиальной задачей в WPF или даже с Windows добавочным номером телефона, но почти невозможно в чистом UWP.

Подпись метода должна остаться прежней, я могу ' я не могу изменить то, что передается внутрь или наружу (я бы sh смог бы).

Я изучил все, от WriteableBitmap и пиксельных буферов, до методов и событий в базовых классах. BitmapImage. Я зашел в тупик, любая помощь приветствуется.

...