Java에서 이미지 병합

이미지 편집 및 조작이 프로그래밍 방식으로 수행되는 다양한 시나리오가 있습니다. 이미지 편집에서 이미지 병합은 예를 들어 콜라주를 만들기 위해 두 개 이상의 이미지를 결합하는 데 사용되는 중요한 기능입니다. 이 기사에서는 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에서 수평으로 이미지 병합

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에서 수직으로 이미지 병합

Java에서 PNG 이미지 병합

이전 섹션에서 JPG 형식의 이미지를 병합하는 방법을 보여주었습니다. 그러나 PNG 형식의 이미지도 병합해야 할 수 있습니다. PNG 이미지를 병합하려면 JpegImage 및 JpegOptions 클래스를 각각 PngImagePngOptions 클래스로 교체하면 나머지 코드는 동일하게 유지됩니다.

다음 코드 샘플은 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로 이미지를 병합하고 사진 격자 등을 만들 수 있습니다.