Я пишу код C# веб-сборки Blazor в VS Code, чтобы загрузить изображение, обработать его и отобразить в браузере.
Поскольку это веб-сборка, все должно работать в браузер.
У меня процессор AMD7, 64 ГБ оперативной памяти, так что это не должно стать узким местом.
Пример изображения, которое я загружаю это: изображение размером 1,3 МБ, 2048x2048px, 72ppi - и мой код показан ниже.
Все строки выполняются в течение 400 мс, пока не будет загружен поток памяти в изображение.
Для Как указано в файле изображения, выполнение этой одной строки занимает около 2 минут и 35 секунд.
Затем с помощью функции изменения размера библиотеки изображений Sharp для изменения размера требуется еще минута и 53 секунды. image.
Может ли кто-нибудь увидеть причину, почему?
using var image = Image.Load(memoryStream);
...и...
image.Mutate(x => x.Resize(image.Width / 5, image.Height / 5));
...так долго?
Спасибо, Марк
Полный код:
@page "/Ir"
@using SixLabors.ImageSharp;
@using SixLabors.ImageSharp.PixelFormats;
@using SixLabors.ImageSharp.Processing;
@using SixLabors.ImageSharp.Processing.Processors;
@using SixLabors.ImageSharp.Formats;
@using SixLabors.ImageSharp.Formats.Png;
@using SixLabors.ImageSharp.Processing.Processors.Dithering;
@using SixLabors.ImageSharp.Processing.Processors.Transforms;
@using System;
@using System.IO;
@using System.Threading.Tasks;
@inject IJSRuntime JS
@code {
private string uploadedFileName { get; set; }
private async Task HandleFileUpload2(ChangeEventArgs e)
{
Console.WriteLine("In HandleFileUpload2");
var files = await JS.InvokeAsync("getUploadedFiles", "imageUpload");
if (files.Length > 0)
{
uploadedFileName = Path.GetFileNameWithoutExtension(files[0]);
string base64Image = files[0];
// Convert base64 string to byte array
byte[] imageData = ConvertBase64ToByteArray(base64Image);
using var memoryStream = new MemoryStream(imageData);
// Delay begins on next line
using var image = Image.Load(memoryStream);
// Next significant delay begins on this line
image.Mutate(x => x.Resize(image.Width / 5, image.Height / 5));
string processedBase64Image = ConvertImageToBase64(image);
await JS.InvokeVoidAsync("renderImageToCanvasUpload", "mainCanvas", "previewCanvas", "storeCanvas", processedBase64Image);
}
}
private byte[] ConvertBase64ToByteArray(string base64Image)
{
int commaIndex = base64Image.IndexOf(',');
if (commaIndex != -1)
{
base64Image = base64Image.Substring(commaIndex + 1);
}
return Convert.FromBase64String(base64Image);
}
private string ConvertImageToBase64(Image image)
{
using var outputStream = new MemoryStream();
image.SaveAsPng(outputStream); // Assuming PNG format
outputStream.Position = 0; // Reset stream position after saving to it
var bytes = outputStream.ToArray(); // Get byte array from stream
return $"data:image/png;base64,{Convert.ToBase64String(bytes)}"; // Properly format it for HTML
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... zor-web-as
Значительная задержка загрузки изображения в поток памяти с использованием веб-сборки C# Blazor. ⇐ C#
Место общения программистов C#
1736424343
Anonymous
Я пишу код C# веб-сборки Blazor в VS Code, чтобы загрузить изображение, обработать его и отобразить в браузере.
Поскольку это веб-сборка, все должно работать в браузер.
У меня процессор AMD7, 64 ГБ оперативной памяти, так что это не должно стать узким местом.
Пример изображения, которое я загружаю это: изображение размером 1,3 МБ, 2048x2048px, 72ppi - и мой код показан ниже.
Все строки выполняются в течение 400 мс, пока не будет загружен поток памяти в изображение.
Для Как указано в файле изображения, выполнение этой одной строки занимает около 2 минут и 35 секунд.
Затем с помощью функции изменения размера библиотеки изображений Sharp для изменения размера требуется еще минута и 53 секунды. image.
Может ли кто-нибудь увидеть причину, почему?
using var image = Image.Load(memoryStream);
...и...
image.Mutate(x => x.Resize(image.Width / 5, image.Height / 5));
...так долго?
Спасибо, Марк
Полный код:
@page "/Ir"
@using SixLabors.ImageSharp;
@using SixLabors.ImageSharp.PixelFormats;
@using SixLabors.ImageSharp.Processing;
@using SixLabors.ImageSharp.Processing.Processors;
@using SixLabors.ImageSharp.Formats;
@using SixLabors.ImageSharp.Formats.Png;
@using SixLabors.ImageSharp.Processing.Processors.Dithering;
@using SixLabors.ImageSharp.Processing.Processors.Transforms;
@using System;
@using System.IO;
@using System.Threading.Tasks;
@inject IJSRuntime JS
@code {
private string uploadedFileName { get; set; }
private async Task HandleFileUpload2(ChangeEventArgs e)
{
Console.WriteLine("In HandleFileUpload2");
var files = await JS.InvokeAsync("getUploadedFiles", "imageUpload");
if (files.Length > 0)
{
uploadedFileName = Path.GetFileNameWithoutExtension(files[0]);
string base64Image = files[0];
// Convert base64 string to byte array
byte[] imageData = ConvertBase64ToByteArray(base64Image);
using var memoryStream = new MemoryStream(imageData);
// Delay begins on next line
using var image = Image.Load(memoryStream);
// Next significant delay begins on this line
image.Mutate(x => x.Resize(image.Width / 5, image.Height / 5));
string processedBase64Image = ConvertImageToBase64(image);
await JS.InvokeVoidAsync("renderImageToCanvasUpload", "mainCanvas", "previewCanvas", "storeCanvas", processedBase64Image);
}
}
private byte[] ConvertBase64ToByteArray(string base64Image)
{
int commaIndex = base64Image.IndexOf(',');
if (commaIndex != -1)
{
base64Image = base64Image.Substring(commaIndex + 1);
}
return Convert.FromBase64String(base64Image);
}
private string ConvertImageToBase64(Image image)
{
using var outputStream = new MemoryStream();
image.SaveAsPng(outputStream); // Assuming PNG format
outputStream.Position = 0; // Reset stream position after saving to it
var bytes = outputStream.ToArray(); // Get byte array from stream
return $"data:image/png;base64,{Convert.ToBase64String(bytes)}"; // Properly format it for HTML
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79342435/significant-delay-loading-an-image-into-memorystream-using-c-sharp-blazor-web-as[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия