Обрезка, поворот и изменение размера изображений

Обрезка изображений

Обрезка изображения обычно относится к удалению внешних частей изображения для улучшения кадрирования. Обрезка также может использоваться для вырезания части изображения для увеличения фокуса на определенной области. API Aspose.PSD поддерживает два различных подхода к обрезке изображений: по сдвигам и прямоугольнику.

Обрезка по сдвигам

Класс RasterImage предоставляет перегруженную версию метода Crop, который принимает 4 целочисленных значения, обозначающих Лево, Право, Верх и Низ. На основе этих четырех значений метод Crop перемещает границы изображения к центру изображения, отбрасывая внешнюю часть. Ниже приведен фрагмент кода, демонстрирующий, как обрезать изображение по сдвигам.

Обрезка прямоугольником

Класс RasterImage предоставляет еще одну перегруженную версию метода Crop, который принимает экземпляр класса Rectangle. Вы можете вырезать любую часть изображения, указав желаемые границы объекту Rectangle. Ниже приведен фрагмент кода, демонстрирующий, как обрезать любое изображение прямоугольником.

Повернуть и отразить изображение

Aspose.PSD для .NET - это простая в использовании библиотека, поскольку она предоставляет простые методы для выполнения сложных операций. Например, для поворота изображения Aspose.PSD для .NET предоставлен метод RotateFlip для своего базового класса Image. Независимо от формата изображения, библиотека может выполнять определенные процедуры вращения и отражения.

Поворот изображения

Метод Image.RotateFlip можно использовать для поворота изображения на 90/180/270 градусов и отражения изображения горизонтально или вертикально. Метод Image.RotateFlip принимает параметр RotateFlipType, который определяет тип вращения и отражения, применяемый к изображению. Шаги для выполнения поворота и отражения просты:

  1. Загрузите изображение с помощью метода фабрики Load класса Image.
  2. Вызовите метод Image.RotateFlip, указав соответствующий RotateFlipType.
  3. Сохраните результат.

Приведенный ниже фрагмент кода демонстрирует, как установить свойство RotateFlip изображения и перечисление RotateFlipType.

Поворот изображения на определенный угол

Aspose.PSD для .NET API предоставляет метод RasterImage.Rotate для удобства пользователей, которые хотят повернуть изображение под определенным углом. В отличие от метода RasterImage.RotateFlip, метод RasterImage.Rotate принимает три параметра:

  1. Угол поворота: Параметр типа float, который указывает угол поворота, на который должно быть повернуто изображение. Положительное значение поворачивает изображение по часовой стрелке; отрицательное значение выполняет поворот против часовой стрелки.
  2. Изменение пропорционально: Параметр типа Boolean определяет, должны ли изменяться размеры изображения согласно проекциям повернутого прямоугольника (точек углов). Если установлено значение false, размеры изображения останутся неизменными, и будут повернуты только внутренние содержимое изображения.
  3. Цвет фона: Параметр типа Color определяет цвет, заполняемый в фон повернутого изображения.

Приведенный ниже фрагмент кода демонстрирует использование метода RasterImage.Rotate.

Изменение размера изображений

В этой статье демонстрируется использование Aspose.PSD для .NET для выполнения операции изменения размера изображения. API Aspose.PSD предоставила эффективные и простые в использовании методы для достижения этой цели. Aspose.PSD для .NET предоставил метод Resize для класса Image, который можно использовать для изменения размера существующих изображений на лету. Существует две перегрузки метода Resize, чтобы удовлетворить потребности приложения.

Простое изменение размера

Шаги для выполнения изменения размера просты:

  1. Загрузите изображение с помощью метода фабрики Load класса Image.
  2. Вызовите метод Image.Resize, указав новую высоту и ширину.
  3. Сохраните результат.

Приведенный ниже фрагмент кода демонстрирует, как изменить размер изображения.

Изменение размера с помощью перечисления ResizeType

API Aspose.PSD предоставила перечисление ResizeType, которое может быть использовано с методом Image.Resize для достижения желаемых результатов. Ниже приведен фрагмент кода, демонстрирующий использование перечисления ResizeType, тогда как подробности членов перечисления ResizeType можно найти внизу этой страницы.

Если вы хотите получить качественный результат после применения изменения размера, рекомендуется всегда использовать ResizeType.LanczosResample, поскольку он выдаст высококачественные результаты, но может работать медленнее, чем метод ResizeType.NearestNeighbourResample. С другой стороны, алгоритм ResizeType.NearestNeighbourResample специально используется для быстрого изменения размера, при этом уступая в качестве изображения. Этот метод может быть полезен для генерации эскизов в реальном времени или подобных процессов, где требуется производительность.

Изменение размера изображения пропорционально

Вы можете изменить размер изображений, передавая новые значения высоты и ширины в качестве параметров методу Image.Resize, но в этом случае вам придется вычислять соотношение сторон самостоятельно. Это связано с тем, что при изменении ширины или высоты изображения оно масштабируется или уменьшается для заполнения нового размера. Если изменения ширины и высоты изображения не пропорциональны, это может привести к растянутым и искаженным результатам. В этой статье демонстрируется использование Aspose.PSD для .NET API для изменения размера изображений, передавая либо новую высоту, либо ширину, позволяя API автоматически рассчитать другое пропорциональное значение.

Перечисление ResizeType

ResizeType определяет тип изменения размера изображения на основе выбранного фильтра.

Члены перечисления ResizeType

Имя члена Значение Описание
LeftTopToLeftTop 0 Левая верхняя точка нового изображения совпадет с левой верхней точкой исходного изображения. Если необходимо, будет выполнено обрезание.
RightTopToRightTop 1 Правая верхняя точка нового изображения совпадет с правой верхней точкой исходного изображения. Если необходимо, будет выполнено обрезание.
RightBottomToRightBottom 2 Правая нижняя точка нового изображения совпадет с правой нижней точкой исходного изображения. Если необходимо, будет выполнено обрезание.
LeftBottomToLeftBottom 3 Левая нижняя точка нового изображения совпадет с левой нижней точкой исходного изображения. Если необходимо, будет выполнено обрезание.
CenterToCenter 4 Центр нового изображения совпадет с центром исходного изображения. Если необходимо, будет выполнено обрезание.
LanczosResample 5 Масштабирование с использованием алгоритма Ланцоша с использованием маски 7x7.
NearestNeighbourResample 6 Масштабирование с использованием алгоритма ближайшего соседа.