이미지 자르기, 회전 및 크기 조정
이미지 자르기
이미지 자르기는 일반적으로 이미지의 외부 부분을 잘라내어 구도를 개선하는 것을 의미합니다. 자르기는 또한 이미지의 특정 영역에 초점을 맞추기 위해 이미지의 일부를 잘라내는 데 사용될 수 있습니다. Aspose.PSD API는 이미지 자르기를 위해 두 가지 다른 방법을 지원합니다: 이동 및 사각형.
이동으로 자르기
RasterImage 클래스는 좌, 우, 위 및 아래를 나타내는 4개의 정수 값을 인수로받는 Crop 메서드의 오버로드된 버전을 제공합니다. 이 네 가지 값에 따라 Crop 메서드는 이미지 경계를 이미지의 중심쪽으로 이동시키면서 외부 부분을 삭제합니다. 아래 코드 스니펫은 이동으로 이미지를 자르는 방법을 보여줍니다.
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()); | |
} |
사각형으로 자르기
RasterImage 클래스는 사각형 클래스의 인스턴스를 인수로받는 Crop 메서드의 다른 오버로드된 버전을 제공합니다. 사각형 객체에 원하는 경계를 제공하여 이미지의 어떤 부분이든 잘라낼 수 있습니다. 아래 코드 스니펫은 사각형으로 이미지를 자르는 방법을 보여줍니다.
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()); | |
} |
이미지 회전 및 뒤집기
Java용 Aspose.PSD는 복잡한 작업을 수행할 수 있는 간단한 방법을 제공하기 때문에 쉽게 사용할 수 있는 라이브러리입니다. 예를 들어, 이미지를 회전해야 하는 경우 Aspose.PSD for Java는 이미지를 회전하기 위해 RotateFlip 메서드를 제공했습니다. 이미지 형식과 관계없이 라이브러리는 특정 회전 및 뒤집기 절차를 수행할 수 있습니다.
이미지 회전
Image.RotateFlip 메서드를 사용하면 이미지를 90/180/270도 회전하고 이미지를 수평 또는 수직으로 뒤집을 수 있습니다. Image.RotateFlip 메서드는 이미지에 적용할 회전 및 뒤집기 유형을 지정하는 RotateFlipType 매개변수를 사용합니다. 회전 및 뒤집기를 수행하기 위한 단계는 아래와 같이 간단합니다.
- Image 클래스에서 노출된 팩토리 메서드 Load를 사용하여 이미지를 로드합니다.
- 적절한 RotateFlipType을 지정하면서 Image.RotateFlip 메서드를 호출합니다.
- 결과를 저장합니다.
다음 코드 예제는 Image의 RotateFlip 속성 및 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()); | |
} |
특정 각도로 이미지 회전
Aspose.PSD for Java API는 특정 각도로 이미지를 회전하려는 사용자를 위해 RasterImage.Rotate 메서드를 노출합니다. RasterImage.RotateFlip 메서드와 달리, RasterImage.Rotate 메서드는 세 가지 매개변수를받습니다:
- 회전 각도: 이미지를 회전해야 하는 회전 각도를 지정하는 부동 소수점형 매개변수입니다. 양수 값은 이미지를 시계 방향으로 회전하고 음수 값은 반시계 방향으로 회전합니다.
- 비례 조정: 부울 형식 매개변수는 이미지 크기가 회전된 사각형 (코너 포인트)의 투영에 따라 변경되어야 하는지 여부를 지정합니다. false로 설정하면 이미지 크기는 변경되지 않고 내부 이미지 콘텐츠만 회전됩니다.
- 배경 색상: Color 형식의 매개변수는 회전된 이미지의 배경에 채울 색상을 지정합니다.
아래 코드 스니펫은 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()); | |
} |
이미지 크기 조정
본 문서는 Aspose.PSD for Java를 사용하여 이미지 크기 조정 작업을 수행하는 방법을 보여줍니다. Aspose.PSD API는 이러한 목표를 달성하기 위해 효율적이고 사용하기 쉬운 메서드를 노출했습니다. Java용 Aspose.PSD는 이미지 크기를 실시간으로 조정하는 데 사용할 수 있는 Image 클래스의 Resize 메서드를 제공합니다. 응용 프로그램 요구에 맞게 Resize 메서드의 두 가지 오버로드가 있습니다.
간단한 크기 조정
크기 조정을 수행하는 단계는 다음과 같습니다:
- Image 클래스가 노출하는 Load 팩토리 메서드를 사용하여 이미지를 로드합니다.
- Image.Resize 메서드를 호출하면서 새 높이 및 너비를 지정합니다.
- 결과를 저장합니다.
다음 코드 예제는 이미지 크기를 조정하는 방법을 보여줍니다.
String dataDir = Utils.getDataDir(SimpleResizing.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "SimpleResizing_out.jpg"; | |
// Load an existing image into an instance of RasterImage class | |
try (Image image = Image.load(sourceFile)) { | |
image.resize(300, 300); | |
image.save(destName, new JpegOptions()); | |
} |
ResizeType 열거형으로 크기 조정
Aspose.PSD API는 Image.Resize와 함께 사용할 수 있는 ResizeType 열거형을 노출했습니다. 아래 코드 스니펫은 ResizeType 열거형의 사용법을 보여주며, ResizeType 열거형 멤버의 자세한 정보는 이 페이지 하단에서 확인할 수 있습니다.
String dataDir = Utils.getDataDir(ResizingwithResizeTypeEnumeration.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "ResizingwithResizeTypeEnumeration_out.jpg"; | |
// Load an existing image into an instance of RasterImage class | |
try (Image image = Image.load(sourceFile)) { | |
image.resize(300, 300, ResizeType.LanczosResample); | |
image.save(destName, new JpegOptions()); | |
} |
크기를 조정한 후 품질 결과를 얻고자 한다면 언제나 ResizeType.LanczosResample을 사용하는 것이 좋습니다. 이 방법은 품질 높은 결과물을 출력하나 ResizeType.NearestNeighbourResample에 비해 작업 시간이 느릴 수 있습니다. 반면 ResizeType.NearestNeighbourResample 알고리즘은 이미지 품질에 조금 희생함으로써 빠르게 크기를 조정하는 데 사용됩니다. 이 방법은 섬네일 생성 또는 성능이 필요한 실시간 작업과 같은 프로세스에서 유용할 수 있습니다.
이미지 비율에 맞춰 크기 조정
새로운 높이와 너비 값을 Image.Resize 메서드의 매개변수로 전달하여 이미지의 크기를 조정할 수 있지만, 이 경우 종횡비를 직접 계산해야 합니다. 이미지의 너비 또는 높이가 변경되면 이미지가 새 크기를 채우기 위해 확대되거나 축소됩니다. 이미지의 너비와 높이 변경이 비율적으로 이루어지지 않으면 늘어난 이미지 또는 왜곡된 결과를 가져올 수 있습니다. 본 문서는 Java용 Aspose.PSD API를 사용하여 새로운 높이 또는 너비를 전달하면서 이미지 크기를 자동으로 계산하도록 허용하여 이미지 크기를 조정하는 방법을 보여줍니다.
String dataDir = Utils.getDataDir(ResizeImageProportionally.class) + "DrawingAndFormattingImages/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "SimpleResizeImageProportionally_out.png"; | |
try (Image image = Image.load(sourceFile)) { | |
if (!image.isCached()) { | |
image.cacheData(); | |
} | |
// Specifying width and height | |
int newWidth = image.getWidth() / 2; | |
image.resizeWidthProportionally(newWidth); | |
int newHeight = image.getHeight() / 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 마스크를 사용하는 Lanczos 알고리즘을 사용하여 재샘플링합니다. |
NearestNeighbourResample | 6 | 가장 가까운 이웃 알고리즘을 사용하여 재샘플링합니다. |