Combinar imágenes en Java

Hay una variedad de escenarios en los que la edición y manipulación de imágenes se realiza mediante programación. En la edición de imágenes, la combinación de imágenes es una función importante que se utiliza para combinar dos o más imágenes, por ejemplo, para hacer un collage. En este artículo, aprenderá cómo fusionar varias imágenes en una sola imagen en Java. Demostraremos explícitamente cómo fusionar imágenes horizontal y verticalmente.

API de Java para fusionar imágenes - Descarga gratuita

Aspose.Imaging for Java es una poderosa API de procesamiento de imágenes que le permite trabajar con una amplia gama de formatos de imagen. Proporciona una variedad de características que se requieren para la edición de imágenes. Usaremos esta API para fusionar nuestras imágenes en esta publicación de blog. Puede descargar la API o instalarla usando las siguientes configuraciones de 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>

Combinar múltiples imágenes en Java

Puede fusionar las imágenes de cualquiera de las dos maneras: vertical y horizontalmente. En la fusión vertical, las imágenes se combinan una por una en dirección vertical. Mientras que, en la fusión horizontal, las imágenes se unen entre sí en dirección horizontal. Entonces, veamos cómo fusionar imágenes en ambos sentidos.

Combinar imágenes horizontalmente en Java

Los siguientes son los pasos para fusionar imágenes horizontalmente usando Java.

  • Primero, especifique las rutas de las imágenes en una matriz de cadenas.
  • Calcule la altura y el ancho de la imagen resultante.
  • Cree un objeto de la clase JpegOptions y configure las opciones requeridas.
  • Cree un objeto de la clase JpegImage e inicialícelo con el objeto JpegOptions y el alto y el ancho de la imagen resultante.
  • Recorra la lista de imágenes y cargue cada imagen usando la clase RasterImage.
  • Cree un Rectángulo para cada imagen y agréguelo a la imagen resultante usando el método JpegImage.saveArgb32Pixels().
  • Aumente el ancho cosido en cada iteración.
  • Una vez hecho esto, guarde la imagen resultante usando el método JpegImage.save(string).

El siguiente ejemplo de código muestra cómo fusionar imágenes horizontalmente en Java.

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

// Ruta de la imagen de salida
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";

// Obtener el tamaño de la imagen 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());
	}
}

// Combinar imágenes en una nueva
try (JpegOptions options = new JpegOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);
	options.setQuality(100);

  	// Crear imagen 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();
			}
		}
    
    		// Guardar imagen de salida
		newImage.save(outputPath);
	}
}

La siguiente imagen muestra el resultado de fusionar dos imágenes similares horizontalmente.

Combinar imágenes horizontalmente en Java

Combinar imágenes verticalmente en Java

Para fusionar las imágenes verticalmente, solo necesita cambiar los roles de las propiedades de alto y ancho. El resto del código será el mismo. El siguiente ejemplo de código demuestra cómo fusionar varias imágenes verticalmente en Java.

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

// Ruta de la imagen de salida
String outputPath = "output-vertical.jpg";

// Obtener el tamaño de la imagen 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();
	}
}

// Combinar imágenes en una nueva
try (JpegOptions options = new JpegOptions()) {
	options.setSource(new StreamSource()); // empty
	options.setQuality(100);
  
  	// Crear imagen 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();
			}
		}
    		// Guardar imagen resultante
		newImage.save(outputPath);
	}
}

La siguiente imagen muestra el resultado de fusionar dos imágenes similares verticalmente.

Combinar imágenes verticalmente en Java

Combinar imágenes PNG en Java

En las secciones anteriores, hemos demostrado cómo fusionar imágenes en formato JPG. Sin embargo, es posible que también deba fusionar imágenes en formato PNG. Para fusionar imágenes PNG, solo necesita reemplazar las clases JpegImage y JpegOptions con las clases PngImage y PngOptions respectivamente y el resto del código permanecerá igual.

El siguiente ejemplo de código muestra cómo fusionar varias imágenes en formato PNG en Java.

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

// Ruta de la imagen de salida
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";

// Obtener el tamaño de la imagen 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());
	}
}

// Combinar imágenes en una nueva
try (PngOptions options = new PngOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);

  	// Crear imagen 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();
			}
		}
    		// Guardar imagen
		newImage.save(outputPath);
	}
}

API de combinación de imágenes de Java: obtenga una licencia gratuita

Puede obtener una licencia temporal gratuita y fusionar las imágenes sin limitaciones de evaluación.

Conclusión

En este artículo, aprendió cómo fusionar varias imágenes en una sola imagen usando Java. Los ejemplos de código Java han demostrado cómo combinar las imágenes vertical y horizontalmente. Además, puede explorar más sobre la API de procesamiento de imágenes de Java utilizando documentación. Además, puede compartir sus consultas con nosotros a través de nuestro foro.

Ver también

Información: Aspose ofrece una aplicación web de collage GRATUITA. Con este servicio en línea, puede fusionar imágenes JPG a JPG o PNG a PNG, crear cuadrículas de fotos, etc.