이미지 편집 및 조작이 프로그래밍 방식으로 수행되는 다양한 시나리오가 있습니다. 이미지 편집에서 이미지 병합은 예를 들어 콜라주를 만들기 위해 두 개 이상의 이미지를 결합하는 데 사용되는 중요한 기능입니다. 이 기사에서는 Java에서 여러 이미지를 단일 이미지로 병합하는 방법을 배웁니다. 이미지를 수평 및 수직으로 병합하는 방법을 명시적으로 시연하겠습니다.
이미지 병합을 위한 Java API - 무료 다운로드
Aspose.Imaging for Java는 광범위한 이미지 형식으로 작업할 수 있는 강력한 이미지 처리 API입니다. 이미지 편집에 필요한 다양한 기능을 제공합니다. 이 API를 사용하여 이 블로그 게시물에서 이미지를 병합합니다. API를 다운로드하거나 다음 Maven 구성을 사용하여 설치할 수 있습니다.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging</artifactId>
<version>22.7</version>
</dependency>
Java에서 여러 이미지 병합
수직 및 수평의 두 가지 방법 중 하나로 이미지를 병합할 수 있습니다. 수직 병합에서는 이미지가 수직 방향으로 하나씩 결합됩니다. 반면 수평 병합에서는 이미지가 수평 방향으로 서로 추가됩니다. 두 가지 방법으로 이미지를 병합하는 방법을 살펴보겠습니다.
Java에서 수평으로 이미지 병합
다음은 Java를 사용하여 이미지를 수평으로 병합하는 단계입니다.
- 먼저 string형 배열에서 이미지의 경로를 지정합니다.
- 결과 이미지의 높이와 너비를 계산합니다.
- JpegOptions 클래스의 객체를 생성하고 필요한 옵션을 설정합니다.
- JpegImage 클래스의 객체를 생성하고 JpegOptions 객체와 결과 이미지의 높이, 너비로 초기화합니다.
- 이미지 목록을 반복하고 RasterImage 클래스를 사용하여 각 이미지를 로드합니다.
- 각 이미지에 대해 사각형을 만들고 JpegImage.saveArgb32Pixels() 메서드를 사용하여 결과 이미지에 추가합니다.
- 각 반복에서 스티치 너비를 늘립니다.
- 완료되면 JpegImage.save(string) 메서드를 사용하여 결과 이미지를 저장합니다.
다음 코드 샘플은 Java에서 이미지를 수평으로 병합하는 방법을 보여줍니다.
// 이미지 목록
String[] imagePaths = { "image.jpg", "image.jpg" };
// 출력 이미지 경로
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";
// 결과 이미지 크기 가져오기
int newWidth = 0;
int newHeight = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(imagePath)) {
Size size = image.getSize();
newWidth += size.getWidth();
newHeight = Math.max(newHeight, size.getHeight());
}
}
// 이미지를 새 이미지로 결합
try (JpegOptions options = new JpegOptions()) {
Source tempFileSource = new FileCreateSource(tempFilePath, true);
options.setSource(tempFileSource);
options.setQuality(100);
// 결과 이미지 만들기
try (JpegImage newImage = (JpegImage) Image.create(options, newWidth, newHeight)) {
int stitchedWidth = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (RasterImage) Image.load(imagePath)) {
Rectangle bounds = new Rectangle(stitchedWidth, 0, image.getWidth(), image.getHeight());
newImage.saveArgb32Pixels(bounds, image.loadArgb32Pixels(image.getBounds()));
stitchedWidth += image.getWidth();
}
}
// 출력 이미지 저장
newImage.save(outputPath);
}
}
다음 이미지는 두 개의 유사한 이미지를 수평으로 병합한 결과를 보여줍니다.
Java에서 수직으로 이미지 병합
이미지를 세로로 병합하려면 height 및 width 속성의 역할만 전환하면 됩니다. 나머지 코드는 동일합니다. 다음 코드 샘플은 Java에서 여러 이미지를 수직으로 병합하는 방법을 보여줍니다.
// 이미지 목록
String[] imagePaths = { "image.jpg", "image.jpg" };
// 출력 이미지의 경로
String outputPath = "output-vertical.jpg";
// 결과 이미지 크기 가져오기
int newWidth = 0;
int newHeight = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (RasterImage) Image.load(imagePath)) {
Size size = image.getSize();
newWidth = Math.max(newWidth, size.getWidth());
newHeight += size.getHeight();
}
}
// 이미지를 새 이미지로 결합
try (JpegOptions options = new JpegOptions()) {
options.setSource(new StreamSource()); // empty
options.setQuality(100);
// 결과 이미지 만들기
try (JpegImage newImage = (JpegImage) Image.create(options, newWidth, newHeight)) {
int stitchedHeight = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (RasterImage) Image.load(imagePath)) {
Rectangle bounds = new Rectangle(0, stitchedHeight, image.getWidth(), image.getHeight());
newImage.saveArgb32Pixels(bounds, image.loadArgb32Pixels(image.getBounds()));
stitchedHeight += image.getHeight();
}
}
// 결과 이미지 저장
newImage.save(outputPath);
}
}
다음 이미지는 두 개의 유사한 이미지를 세로로 병합한 출력을 보여줍니다.
Java에서 PNG 이미지 병합
이전 섹션에서 JPG 형식의 이미지를 병합하는 방법을 보여주었습니다. 그러나 PNG 형식의 이미지도 병합해야 할 수 있습니다. PNG 이미지를 병합하려면 JpegImage 및 JpegOptions 클래스를 각각 PngImage 및 PngOptions 클래스로 교체하면 나머지 코드는 동일하게 유지됩니다.
다음 코드 샘플은 Java에서 PNG 형식의 여러 이미지를 병합하는 방법을 보여줍니다.
// 이미지 목록
String[] imagePaths = { "image.png", "image.png" };
// 출력 이미지 경로
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";
// 결과 이미지 크기 가져오기
int newWidth = 0;
int newHeight = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(imagePath)) {
Size size = image.getSize();
newWidth += size.getWidth();
newHeight = Math.max(newHeight, size.getHeight());
}
}
// 이미지를 새 이미지로 결합
try (PngOptions options = new PngOptions()) {
Source tempFileSource = new FileCreateSource(tempFilePath, true);
options.setSource(tempFileSource);
// 결과 이미지 만들기
try (PngImage newImage = (PngImage) Image.create(options, newWidth, newHeight)) {
int stitchedWidth = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (RasterImage) Image.load(imagePath)) {
Rectangle bounds = new Rectangle(stitchedWidth, 0, image.getWidth(), image.getHeight());
newImage.saveArgb32Pixels(bounds, image.loadArgb32Pixels(image.getBounds()));
stitchedWidth += image.getWidth();
}
}
// 이미지를 저장
newImage.save(outputPath);
}
}
Java 이미지 병합 API - 무료 라이선스 받기
임시 라이선스를 무료로 받기 평가 제한 없이 이미지를 병합할 수 있습니다.
결론
이 기사에서는 Java를 사용하여 여러 이미지를 단일 이미지로 병합하는 방법을 배웠습니다. Java 코드 샘플은 이미지를 수직 및 수평으로 결합하는 방법을 보여주었습니다. 또한 문서를 사용하여 Java 이미지 처리 API에 대해 자세히 알아볼 수 있습니다. 또한 포럼을 통해 질문을 공유할 수 있습니다.
또한보십시오
정보: Aspose는 무료 콜라주 웹 앱을 제공합니다. 이 온라인 서비스를 사용하여 JPG를 JPG로 또는 PNG를 PNG로 이미지를 병합하고 사진 격자 등을 만들 수 있습니다.