Изменение размера изображений с помощью MVC 6 на Ubuntu с запуском ASP.NET 5 на Mono

Как resize изображения в ASP.NET 5, MVC 6, DNX451, с помощью функции MONO, работающей на Ubuntu?

Я не смог это обработать, поскольку стандартные компоненты, которые я использовал, такие как ImageProcessor и ImageResizer.NET, похоже, не работают.

ознакомьтесь с этой библиотекой кроссплатформенности: https://github.com/JimBobSquarePants/ImageSharp

использование образца:

using (FileStream stream = File.OpenRead("foo.jpg")) using (FileStream output = File.OpenWrite("bar.jpg")) { Image image = new Image(stream); image.Resize(image.Width / 2, image.Height / 2) .Greyscale() .Save(output); } 

В настоящее время я разрабатываю веб-сайт в DNX 4.5.1 (ASP.NET 5) и MVC 6, который предназначен для размещения на сервере Ubuntu.

Недавно я столкнулся с проблемами с повторной калибровкой изображений, поэтому мне пришлось думать из коробки. В моем случае не было необходимости перерисовывать изображения в моей среде разработки, поэтому я сосредоточился на том, как справиться с этим в моей будущей среде prod.

Решением было использовать ImageMagick, что является очень приятным небольшим программным обеспечением для Linux.

Вот как я это решил:

 if (_hostingEnvironment.IsProduction()) { var command = "-c 'convert " + filePath + " -resize 960x960 -quality 70 " + filePath + "'"; Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "/bin/bash"; proc.StartInfo.Arguments = command; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = false; proc.Start(); } 

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

Это хорошее решение, но, как я уже сказал, я сосредоточился только на том, чтобы сделать эту работу над Ubuntu, которая будет моей производственной средой, и поэтому она инкапсулирована в предложение if, проверяя, есть ли я на prod или нет, но аналогичный подход, вероятно, также может быть возможен в средах Windows, но я предпочел бы пойти на какой-то стандартный компонент, чтобы сделать эту работу.