Обрізання зображень

Обрізання зображень зазвичай відноситься до видалення зовнішніх частин зображення для покращення кадру. Також обрізання може використовуватися для видалення деякої частини зображення для збільшення фокусу на певній області. API Aspose.PSD підтримує два різні підходи до обрізки зображень: за зсувами та за прямокутником.

Обрізання за допомогою зсувів

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

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"CroppingByShifts_out.jpg";
// Load an existing image into an instance of RasterImage class
using (RasterImage rasterImage = (RasterImage)Image.Load(sourceFile))
{
// Before cropping, the image should be cached for better performance
if (!rasterImage.IsCached)
{
rasterImage.CacheData();
}
// Define shift values for all four sides
int leftShift = 10;
int rightShift = 10;
int topShift = 10;
int bottomShift = 10;
// Based on the shift values, apply the cropping on image Crop method will shift the image bounds toward the center of image and Save the results to disk
rasterImage.Crop(leftShift, rightShift, topShift, bottomShift);
rasterImage.Save(destName, new JpegOptions());
}

Обрізання за допомогою прямокутника

Клас RasterImage надає іншу перевантажену версію методу Crop, яка приймає екземпляр класу Rectangle. Ви можете вирізати будь-яку частину зображення, надаючи потрібні межі об’єкту Rectangle. Нижче наведена фрагмент коду, що демонструє, як обрізати будь-яке зображення за допомогою прямокутника.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"CroppingByRectangle_out.jpg";
// Load an existing image into an instance of RasterImage class
using (RasterImage rasterImage = (RasterImage)Image.Load(sourceFile))
{
if (!rasterImage.IsCached)
{
rasterImage.CacheData();
}
// Create an instance of Rectangle class with desired size,
//Perform the crop operation on object of Rectangle class and Save the results to disk
Rectangle rectangle = new Rectangle(20, 20, 20, 20);
rasterImage.Crop(rectangle);
rasterImage.Save(destName, new JpegOptions());
}

Обертання та віддзеркалення зображення

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.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"RotatingAnImage_out.jpg";
// Load an existing image into an instance of RasterImage class
using (Image image = Image.Load(sourceFile))
{
image.RotateFlip(RotateFlipType.Rotate270FlipNone);
image.Save(destName, new JpegOptions());
}

Обертання зображення під кутом

API Aspose.PSD для .NET надає метод RasterImage.Rotate для спрощення користувачам, які бажають обертати зображення під певним кутом. На відміну від методу RasterImage.RotateFlip, метод RasterImage.Rotate приймає три параметри:

  1. Кут обертання: Параметр типу float, який вказує кут обертання, на який потрібно повернути зображення. Позитивне значення обертає зображення за годинниковою стрілкою; від’ємне значення виконує обертання проти годинникової стрілки.
  2. Пропорціональне зміщення: Параметр типу Boolean вказує, чи потрібно змінювати розмір зображення відповідно до проекцій оберненого прямокутника (точок кутів). Якщо встановлено значення false, розміри зображення залишаться незмінними, а обертається лише внутрішній вміст зображення.
  3. Колір фону: Параметр типу Color вказує колір, який буде заповнено у фоні обернутого зображення.

Нижче наведена фрагмент коду, що демонструє використання методу RasterImage.Rotate.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"RotatingImageOnSpecificAngle_out.jpg";
// Load an image to be rotated in an instance of RasterImage
using (RasterImage image = (RasterImage)Image.Load(sourceFile))
{
// Before rotation, the image should be cached for better performance
if (!image.IsCached)
{
image.CacheData();
}
// Perform the rotation on 20 degree while keeping the image size proportional with red background color and Save the result to a new file
image.Rotate(20f, true, Color.Red);
image.Save(destName, new JpegOptions());
}

Зміна розміру зображень

У цій статті показано використання Aspose.PSD для .NET для виконання операції зміни розміру зображення. API Aspose.PSD надали ефективні та легкі використовувані методи для досягнення цієї мети. Aspose.PSD для .NET надали метод Resize для класу Image, який може бути використаний для зміни розміру існуючих зображень на льоту. Є дві перевантажені версії методу Resize для відповідності потребам додатка.

Проста зміна розміру

Кроки для виконання зміни розміру є простими, як показано нижче:

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

Наступний приклад коду демонструє, як змінити розмір зображення.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"SimpleResizing_out.jpg";
// Load an existing image into an instance of RasterImage class
using (Image image = Image.Load(sourceFile))
{
image.Resize(300, 300);
image.Save(destName, new JpegOptions());
}

Зміна розміру з використанням переліку ResizeType

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

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"ResizingwithResizeTypeEnumeration_out.jpg";
// Load an existing image into an instance of RasterImage class
using (Image image = Image.Load(sourceFile))
{
image.Resize(300, 300, ResizeType.LanczosResample);
image.Save(destName, new JpegOptions());
}

Якщо ви прагнете отримати якісний результат після застосування зміни розміру, рекомендується завжди використовувати ResizeType.LanczosResample, оскільки він виведе високоякісні результати, але може працювати повільніше, ніж ResizeType.NearestNeighbourResample. З іншого боку, алгоритм ResizeType.NearestNeighbourResample, спеціально призначений для швидкого змішування, при цьому жертвуючи якістю зображення. Цей метод може бути корисним для генерації мініатюр в реальному часі або схожих процесів, де необхідна продуктивність.

Зміна розміру зображення пропорційно

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

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"SimpleResizeImageProportionally_out.png";
// Load an existing image into an instance of RasterImage class
using (Image image = Image.Load(sourceFile))
{
if (!image.IsCached)
{
image.CacheData();
}
// Specifying width and height
int newWidth = image.Width / 2;
image.ResizeWidthProportionally(newWidth);
int newHeight = image.Height / 2;
image.ResizeHeightProportionally(newHeight);
image.Save(destName, new PngOptions());
}

Перелік ResizeType

ResizeType визначає тип зміни розміру, яку слід виконати над зображенням на основі вибраного фільтру.

Члени переліку ResizeType

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