/
githubmirror
/
Files
Обзор
Документация
Войти
/
githubmirror
/
Files
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Files.App/Extensions/ImageSourceExtensions.cs
63 строки
1 KB
Yair
Code Quality: Ran code cleanup (#17307)
25 июл 2025, 03:57
Не верифицирован
25 июл 2025, 03:57
4558bc2
Код
Авторство
О чём код?
// Copyright (c) Files Community // Licensed under the MIT License. using System.IO; using System.Runtime.InteropServices.WindowsRuntime; using Windows.Storage; using Windows.Storage.Streams; namespace Files.App.Extensions { internal static class ImageSourceExtensions { internal static async Task<byte[]> ToByteArrayAsync(this IInputStream stream) { if (stream is null) { return null; } await using var readStream = stream.AsStreamForRead(); return await readStream.ToByteArrayAsync(); } internal static async Task<byte[]> ToByteArrayAsync(this StorageFile file) { if (file is null) { return null; } using (IRandomAccessStream fileStream = await file.OpenAsync(FileAccessMode.Read)) { var bytes = new byte[fileStream.Size]; await fileStream.ReadAsync(bytes.AsBuffer(), (uint)fileStream.Size, InputStreamOptions.None); return bytes; } } private static async Task<byte[]> ToByteArrayAsync(this Stream stream, CancellationToken cancellationToken = default) { MemoryStream memoryStream; if (stream.CanSeek) { var length = stream.Length - stream.Position; memoryStream = new MemoryStream((int)length); } else { memoryStream = new MemoryStream(); } using (memoryStream) { await stream.CopyToAsync(memoryStream, bufferSize: 81920, cancellationToken).ConfigureAwait(false); return memoryStream.ToArray(); } } } }