Przycinanie, obracanie i zmiana rozmiaru obrazów
Przycinanie obrazów
Przycinanie obrazu zazwyczaj odnosi się do usunięcia zewnętrznych części obrazu, aby poprawić kompozycję. Przycinanie może być również stosowane do wycięcia pewnej części obrazu w celu zwiększenia koncentracji na określonym obszarze. Interfejs API Aspose.PSD obsługuje dwa różne podejścia do przycinania obrazów: poprzez przesunięcia i prostokąt.
Przycinanie przez przesunięcia
Klasa RasterImage udostępnia przeciążoną wersję metody Crop, która przyjmuje 4 wartości całkowite oznaczające Lewą, Prawą, Górną i Dolną. Na podstawie tych czterech wartości metoda Crop przesuwa granice obrazu w kierunku środka obrazu, odrzucając zewnętrzną część. Poniższy fragment kodu demonstruje, jak przyciąć obraz przez przesunięcia.
String dataDir = Utils.getDataDir(CroppingbyShifts.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "CroppingByShifts_out.jpg"; | |
// Load an existing image into an instance of RasterImage class | |
try (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()); | |
} |
Przycinanie przez prostokąt
Klasa RasterImage udostępnia inną przeciążoną wersję metody Crop, która przyjmuje instancję klasy Rectangle. Możesz wyciąć dowolną część obrazu, podając żądane granice obiektowi Rectangle. Poniższy fragment kodu demonstruje, jak przyciąć dowolny obraz przez prostokąt.
String dataDir = Utils.getDataDir(CroppingbyRectangle.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "CroppingByRectangle_out.jpg"; | |
// Load an existing image into an instance of RasterImage class | |
try (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()); | |
} |
Obracanie i odwracanie obrazu
Aspose.PSD dla Javy to łatwa w użyciu biblioteka, ponieważ zapewnia proste metody do wykonywania skomplikowanych operacji. Na przykład, Aspose.PSD dla Javy dostarcza metodę RotateFlip dla swojej klasy bazowej Image, jeśli aplikacja wymaga obrotu obrazu. Bez względu na format obrazu, biblioteka może wykonać określoną procedurę obracania i odwracania na nim.
Obracanie obrazu
Metoda Image.RotateFlip może być użyta do obracania obrazu o 90/180/270 stopni i odwracania obrazu poziomo lub pionowo. Metoda Image.RotateFlip przyjmuje parametr RotateFlipType, który określa rodzaj obrotu i odwrócenia do zastosowania na obrazie. Kroki do wykonania obrotu i odwrócenia są takie proste, jak poniżej:
- Wczytaj obraz za pomocą metody fabrycznej Load dostępnej w klasie Image.
- Wywołaj metodę Image.RotateFlip, określając odpowiedni RotateFlipType.
- Zapisz wyniki.
Poniższy przykład kodu demonstruje, jak ustawić właściwość RotateFlip obrazu i enumerację RotateFlipType.
String dataDir = Utils.getDataDir(RotatinganImage.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "RotatingAnImage_out.jpg"; | |
// Load an existing image into an instance of RasterImage class | |
try (Image image = Image.load(sourceFile)) { | |
image.rotateFlip(RotateFlipType.Rotate270FlipNone); | |
image.save(destName, new JpegOptions()); | |
} |
Obracanie obrazu pod konkretnym kątem
Interfejs API Aspose.PSD dla Javy udostępnia metodę RasterImage.Rotate umożliwiającą użytkownikom obracanie obrazu pod konkretnym kątem. W przeciwieństwie do metody RasterImage.RotateFlip, metoda RasterImage.Rotate przyjmuje trzy parametry:
- Kąt obrotu: Parametr typu float, który określa kąt obrotu, o jaki należy obrócić obraz. Dodatnia wartość obraca obraz zgodnie z ruchem wskazówek zegara, a wartość ujemna wykonuje obrót przeciwnie do ruchu wskazówek zegara.
- Proporcjonalne zmiany rozmiaru: Parametr typu Boolean określa, czy rozmiar obrazu ma być zmieniony zgodnie z projekcjami obróconego prostokąta (punkty narożne). Jeśli ustawiono na false, wymiary obrazu pozostaną niezmienione, a jedynie zawartość wewnętrzna obrazu zostanie obrócona.
- Kolor tła: Parametr typu Color określa kolor, który ma zostać wypełniony w tle obróconego obrazu.
Poniższy fragment kodu demonstruje użycie metody RasterImage.Rotate.
String dataDir = Utils.getDataDir(RotatinganImageonaSpecificAngle.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "RotatingImageOnSpecificAngle_out.jpg"; | |
try (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.getRed()); | |
image.save(destName, new JpegOptions()); | |
} |