Вы можете попробовать net-vips , привязку C # для libvips . Это ленивая, потоковая, управляемая по требованию библиотека обработки изображений, поэтому она может выполнять такие операции без необходимости загружать все изображение.
Например, он поставляется с удобной миниатюрой изображений:
Image image = Image.Thumbnail("image.jpg", 300, 300);
image.WriteToFile("my-thumbnail.jpg");
Он также поддерживает интеллектуальное кадрирование, способ интеллектуального определения наиболее важной части изображения и удержания его в фокусе при кадрировании изображения. Например:
Image image = Image.Thumbnail("owl.jpg", 128, crop: "attention");
image.WriteToFile("tn_owl.jpg");
Где owl.jpg
- нецентральная композиция:
Дает этот результат:
Сначала оно сжимает изображение, чтобы получить вертикальную ось до 128 пикселей, а затем обрезается до 128 пикселей по ширине, используя стратегию attention
. Этот файл ищет изображение, которое может привлечь внимание человека, подробнее см. Smartcrop()
.