2015-07-27 5 views
0

Я использую изображение magick для .net для обрезки и изменения размера изображений. Но проблема с библиотекой заключается в том, что она только обрезает нижнюю часть изображения. Нет ли способа, посредством которого мы можем равномерно распределять его как вверх, так и вниз или влево и вправо?Равномерное обрезка изображения с обеих сторон с помощью imagemagick .net

Edited вопрос:

MagickGeometry size = new MagickGeometry(width, height); 
    size.IgnoreAspectRatio = maintainAspectRatio; 
    imgStream.Crop(size); 
+0

Это поможет, если добавить образец кода, чтобы продемонстрировать то, что вы делаем. – dlemstra

+0

Да, это возможно и легко сделать. Что вы пробовали? – emcconville

+0

@emcconville Я отредактировал этот вопрос. Это только обрезает нижнюю часть изображения. Не могли бы вы рассказать мне, как сделать для обеих сторон? – Naresh

ответ

3

Crop всегда будет использовать заданную ширину и высоту в Magick.NET/ImageMagick так что нет необходимости устанавливать size.IgnoreAspectRatio , Если вы хотите, чтобы вырезать определенную область в центре вашего изображения, вы должны использовать другую перегрузку урожая, который также имеет гравитацию в качестве аргумента:

imgStream.Crop(width, height, Gravity.Center); 
+0

вы также можете помочь мне с этой проблемой также http://stackoverflow.com/questions/31701190/apply-watermark-on-image-using-imagemagick-net-in-c-sharp – Naresh

2

Если переменная size является экземпляром MagickGeometry, чем должно быть X & Y смещение свойства. Я не знаком с , но я предположил бы, что это было бы что-то вроде ...

MagickGeometry size = new MagickGeometry(width, height); 
size.IgnoreAspectRatio = maintainAspectRatio; 
// Adjust geometry offset to center of image (same as `-gravity Center`) 
size.Y = imgStream.Height/2 - height/2; 
size.X = imgStream.Width/2 - width/2; 
imgStream.Crop(size);