Mesclar imagens em Java

Há uma variedade de cenários nos quais a edição e a manipulação de imagens são executadas programaticamente. Na edição de imagens, a mesclagem de imagens é um recurso importante que é usado para combinar duas ou mais imagens, por exemplo, para fazer colagem. Neste artigo, você aprenderá como mesclar várias imagens em uma única imagem em Java. Demonstraremos explicitamente como mesclar imagens horizontalmente e verticalmente.

API Java para mesclar imagens - download gratuito

Aspose.Imaging for Java é uma poderosa API de processamento de imagem que permite trabalhar com uma ampla variedade de formatos de imagem. Ele fornece uma variedade de recursos necessários para edição de imagens. Usaremos essa API para mesclar nossas imagens nesta postagem do blog. Você pode baixar a API ou instalá-la usando as seguintes configurações do 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>

Mesclar várias imagens em Java

Você pode mesclar as imagens de duas maneiras: verticalmente e horizontalmente. Na mesclagem vertical, as imagens são combinadas uma a uma na direção vertical. Considerando que, na mesclagem horizontal, as imagens são anexadas umas às outras na direção horizontal. Então, vamos ver como mesclar imagens de ambas as maneiras.

Mesclar imagens horizontalmente em Java

A seguir estão as etapas para mesclar imagens horizontalmente usando Java.

  • Primeiro, especifique os caminhos das imagens em uma matriz de strings.
  • Calcule a altura e a largura da imagem resultante.
  • Crie um objeto da classe JpegOptions e defina as opções necessárias.
  • Crie um objeto da classe JpegImage e inicialize-o com o objeto JpegOptions e altura e largura da imagem resultante.
  • Percorra a lista de imagens e carregue cada imagem usando a classe RasterImage.
  • Crie um Rectangle para cada imagem e adicione-o à imagem resultante usando o método JpegImage.saveArgb32Pixels().
  • Aumente a largura costurada em cada iteração.
  • Uma vez feito, salve a imagem resultante usando o método JpegImage.save(string).

O exemplo de código a seguir mostra como mesclar imagens horizontalmente em Java.

// Lista de imagens
String[] imagePaths = { "image.jpg", "image.jpg" };

// Caminho da imagem de saída
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";

// Obtenha o tamanho da imagem resultante
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());
	}
}

// Combine imagens em uma nova
try (JpegOptions options = new JpegOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);
	options.setQuality(100);

  	// Criar imagem resultante
	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();
			}
		}
    
    		// Salvar imagem de saída
		newImage.save(outputPath);
	}
}

A imagem a seguir mostra a saída da mesclagem de duas imagens semelhantes horizontalmente.

Mesclar imagens horizontalmente em Java

Mesclar imagens verticalmente em Java

Para mesclar as imagens verticalmente, você só precisa alternar as funções das propriedades de altura e largura. O resto do código será o mesmo. O exemplo de código a seguir demonstra como mesclar várias imagens verticalmente em Java.

// Lista de imagens
String[] imagePaths = { "image.jpg", "image.jpg" };

// Caminho da imagem de saída
String outputPath = "output-vertical.jpg";

// Obtenha o tamanho da imagem resultante
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();
	}
}

// Combine imagens em uma nova
try (JpegOptions options = new JpegOptions()) {
	options.setSource(new StreamSource()); // empty
	options.setQuality(100);
  
  	// Criar imagem resultante
	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();
			}
		}
    		// Salvar imagem resultante
		newImage.save(outputPath);
	}
}

A imagem a seguir mostra a saída da mesclagem de duas imagens semelhantes verticalmente.

Mesclar imagens verticalmente em Java

Mesclar imagens PNG em Java

Nas seções anteriores, demonstramos como mesclar imagens no formato JPG. No entanto, você também pode precisar mesclar imagens no formato PNG. Para mesclar imagens PNG, você só precisa substituir as classes JpegImage e JpegOptions pelas classes PngImage e PngOptions respectivamente e o restante do código permanecerá o mesmo.

O exemplo de código a seguir mostra como mesclar várias imagens no formato PNG em Java.

// Lista de imagens
String[] imagePaths = { "image.png", "image.png" };

// Caminho da imagem de saída
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";

// Obtenha o tamanho da imagem resultante
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());
	}
}

// Combine imagens em uma nova
try (PngOptions options = new PngOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);

  	// Criar imagem resultante
	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();
			}
		}
    		// Salvar imagem
		newImage.save(outputPath);
	}
}

Java Image Merging API - Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita e mesclar as imagens sem limitações de avaliação.

Conclusão

Neste artigo, você aprendeu como mesclar várias imagens em uma única imagem usando Java. Os exemplos de código Java demonstraram como combinar as imagens vertical e horizontalmente. Além disso, você pode explorar mais sobre a API de processamento de imagem Java usando documentação. Além disso, você pode compartilhar suas dúvidas conosco através do nosso fórum.

Veja também

Informações: Aspose fornece um aplicativo web de colagem GRATUITO. Usando este serviço online, você pode mesclar JPG para JPG ou PNG para imagens PNG, criar grades de fotos e assim por diante.