@sergeyiljin

Как обрезать и повернуть фото?

Для определения области обрезания использую cropperjs.Координаты записываю в скрытые поля формы, которые затем отправляю на сервер вместе с исходным файлом.Как грамотно реализовать логику обрезки на сервере, с сохранением фото в нужной папке?
Сохраняю значения в скрытые поля:
const image = document.getElementById('image');
const cropper = new Cropper(image, {
  aspectRatio: 16 / 9,
  crop(event) {
    this.x = event.detail.x;
    this.y = event.detail.y;
    this.width = event.detail.width;
    this.height = event.detail.height;
    this.rotate = event.detail.rotate;
  },
});

Код сохранения файла без обрезки:
[HttpPost]
        public async Task<IActionResult> AddFile(IFormFile uploadedFile, string x, string y, string width, string height, string rotate)
        {
            if (uploadedFile != null)
            {
                User user = await _userManager.FindByNameAsync(User.Identity.Name);
                var userImg = await _context.Users.Include(u => u.Images).Where(u => u.Id == user.Id).SingleAsync();
                var Counter = userImg.Images.Count;
                if (Counter > 2)
                {
                    TempData["photoMessage"] = "В Вашем профиле должно быть не более трёх фотографий!";
                    return RedirectToAction("profile", "home");
                }
                else
                {
                    var name = Guid.NewGuid() + uploadedFile.FileName;
                    string path = "/userPhotos/" + name;
                        using (var fileStream = new FileStream(_appEnvironment.WebRootPath + path, FileMode.Create))
                        {
                            await uploadedFile.CopyToAsync(fileStream);
                        }
                        Image file = new Image { Name = name, Path = path, User = user };
                        _context.Images.Add(file);
                        _context.SaveChanges();
                    return RedirectToAction("profile", "home");
                }  
            }
            TempData["photoMessage"] = "Не выбрана фотография!";
            return RedirectToAction("profile", "home");
        }
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 2
@mefutu
https://docs.microsoft.com/en-us/dotnet/api/system... вот вам стандартный помошник по работе с изображениями в asp.net.
С ним вы можете:
* обрезать
* добавить водяной знак
* повернуть
* многое другое
Ответ написан
Splinter_1g
@Splinter_1g
.NET Core, VueJS
Есть хороший пример с использованием CoreCompat.System.Drawing.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
20 марта 2019, в 01:07
1000 руб./за проект
20 марта 2019, в 00:27
2000 руб./за проект
19 марта 2019, в 23:14
6000 руб./за проект