В моем проекте мне нужно обрезать и изменить размер изображений, загружаемых пользователями.И я использую фантастическую библиотеку ImageSharp от Six Labors .Вы можете использовать его процессор обработки изображений для выполнения таких преобразований, как изменение размера, обрезка, наклон, поворот и т. Д.
Установка через NuGet
Я фактически использую их ночную сборку через MyGet.
- Visual Studio -> Инструменты -> Параметры -> Диспетчер пакетов NuGet -> Источники пакетов
- Нажмите кнопку "Плюс", чтобы добавить новый ресурс пакета
- Я набрал "ImageSharp Nightly "в качестве имени и укажите" https://www.myget.org/F/sixlabors/api/v3/index.json" в качестве URL-адреса источника.
- При просмотре выполните поиск "SixLabors.ImageSharp" (В моем случае мне также требуется "SixLabors.ImageSharp.Drawing", нов вашем случае вам может понадобиться только базовая библиотека. Всегда возвращайтесь к их документации).
Crop & Resize
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Transforms;
using SixLabors.Primitives;
using System.IO;
namespace DL.SO.Project.Services.ImageProcessing.ImageSharp
{
public CropAndResizeResult CropAndResize(byte[] originalImage,
int offsetX, int offsetY, int croppedWidth, int croppedHeight,
int finalWidth, int finalHeight) : IImageProcessingService
{
IImageFormat format;
using (var image = Image.Load(originalImage, out format))
{
image.Mutate(x => x
// There is .Rotate() you can call for your case
.Crop(new Rectangle(offsetX, offsetY, croppedWidth, croppedHeight))
.Resize(finalWidth, finalHeight));
using (var output = new MemoryStream())
{
image.Save(output, format);
// This is just my custom class. But see you can easily
// get the processed image byte[] using the ToArray() method.
return new CropAndResizeResult
{
ImageExtension = format.Name,
CroppedImage = output.ToArray()
};
}
}
}
}
Надеюсь, это поможет вам - от большого поклонникаБиблиотека ImageSharp!