Изрязване, Въртене и Преоразмеряване на Изображения

Изрязване на Изображения

Обикновено изрязването на изображения се отнася до премахването на външните части на изображението, което помага за подобряване на композицията. Изрязването може да се използва и за изрязване на част от изображението, за да се акцентира върху определената област. Aspose.PSD API поддържа два различни подхода към изрязване на изображения: чрез отмествания и чрез правоъгълник.

Изрязване чрез Отмествания

Класът 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 на Image и на събирането на енумерацията 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());
}

Ротиране на Изображение на Конкретен Ъгъл

Aspose.PSD за .NET API разкрива метода 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, за да извършите операцията по Преоразмеряване на изображение. Aspose.PSD API предлага ефикасни и лесни за използване методи за постигане на тази цел. 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

Aspose.PSD API е изложил енумерация 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 Преобразуване с използване на алгоритъма Lanszos с 7х7 филтър.
NearestNeighbourResample 6 Преобразуване с използване на алгоритъма на най-близкия съсед.