Подтвердить что ты не робот

Манипулирование изображениями с помощью .NET Core

Я обновил свой проект с .NET 4.5 до .NET Core (с ядром ASP.NET). У меня был очень простой код в моей предыдущей версии, который использовал объект растрового изображения из System.Drawing для изменения размера изображения.

Как я понимаю, System.Drawing не может использоваться в .NET Core, потому что он не является кросс-платформенным, но что можно использовать вместо этого?

Я искал это и ничего не нашел. Единственное, что я могу найти, это этот пост, у которого нет никакого кода на нем, что так всегда.

4b9b3361

Ответ 1

Отказ от ответственности: Это мое программное обеспечение.

Я работаю над кросс-платформенной 2D-графической библиотекой, которая работает на .NET Core. Она в настоящее время альфа, но уже поддерживает полный набор функций.

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);
}

Ответ 2

Я нашел реализацию System.Drawing для .NET Core на основе источников Mono, поддерживаемых по адресу:

Пакет NuGet находится по адресу:

Что вы можете использовать в своем .NET Core App project.json с помощью:

{
  "dependencies": {
    "CoreCompat.System.Drawing": "1.0.0-beta006",
    ...
  },
}

Ответ 3

Вам действительно нужно быть кросс-платформой на сервере? Если нет, используйте ASP.NET 5 с .NET 4.6 вместо .NET Core, и все должно отлично работать с System.Drawing