MayukhSen Ответов: 1

Как создать функцию изменения размера изображения на стороне клиента


Я работаю над проектом MVC, в котором у меня есть форма взаимодействия с пользователем. Пользователи могут загружать изображения через него. Теперь это изображение должно быть преобразовано в jpeg и сохранено в нескольких измерениях. Я использовал серверный код, который просто сохраняет загруженный файл и создает миниатюру.


Но этот процесс делает мое приложение немного медленным. Может ли кто-нибудь помочь мне с клиентским кодом, который может создавать многомерные изображения на лету в браузере, прежде чем он попадет на сервер? На сервере я могу разместить их изображения позже.

Что я уже пробовал:

Image image = Image.FromFile(fileName); 
Image thumb = image.GetThumbnailImage(120, 120, ()=>false, IntPtr.Zero);
thumb.Save(Path.ChangeExtension(fileName, "120"));
thumb = image.GetThumbnailImage(180, 180, ()=>false, IntPtr.Zero);
thumb.Save(Path.ChangeExtension(fileName, "180"));
thumb = image.GetThumbnailImage(300, 300, ()=>false, IntPtr.Zero);
thumb.Save(Path.ChangeExtension(fileName, "300"));

Richard MacCutchan

Почему бы просто не сохранить изображение в исходном формате? Единственный раз, когда вам нужно изменить его размер, - это когда вам нужно отобразить его снова.

BillWoodruff

"сохранено в нескольких измерениях" : пожалуйста, опишите это более подробно.

также опишите, что необходимо сделать на стороне клиента.

1 Ответов

Рейтинг:
0

MadMyche

Вам лучше оставить его на стороне сервера и оптимизировать - в противном случае вы сделаете пользовательский интерфейс медленным, а также увеличите пропускную способность.

Первый вариант-посмотреть, сможете ли вы найти более быстрый код для создания миниатюр.

Другой вариант - использовать асинхронные задачи для изменения размера.

Или у вас может быть служба, работающая в фоновом режиме, которая запускается событием файловой системы, таким как новый файл, который будет выполнять изменение размера, если миниатюра еще не существует.


BillWoodruff

+5