Unisci immagini in Java

Esistono diversi scenari in cui la modifica e la manipolazione delle immagini vengono eseguite a livello di codice. Nell’editing delle immagini, l’unione di immagini è una caratteristica importante che viene utilizzata per combinare due o più immagini, ad esempio per creare collage. In questo articolo imparerai come unire più immagini in un’unica immagine in Java. Dimostreremo esplicitamente come unire le immagini orizzontalmente e verticalmente.

API Java per unire le immagini - Download gratuito

Aspose.Imaging for Java è una potente API di elaborazione delle immagini che ti consente di lavorare con un’ampia gamma di formati di immagine. Fornisce una varietà di funzioni necessarie per la modifica delle immagini. Useremo questa API per unire le nostre immagini in questo post del blog. Puoi scaricare l’API o installarla utilizzando le seguenti configurazioni 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>

Unisci più immagini in Java

Puoi unire le immagini in uno dei due modi: verticalmente e orizzontalmente. Nell’unione verticale, le immagini vengono combinate una per una in direzione verticale. Mentre, nella fusione orizzontale, le immagini vengono aggiunte l’una all’altra in direzione orizzontale. Vediamo quindi come unire le immagini in entrambi i modi.

Unisci le immagini orizzontalmente in Java

Di seguito sono riportati i passaggi per unire le immagini orizzontalmente utilizzando Java.

  • Innanzitutto, specifica i percorsi delle immagini in una matrice di stringhe.
  • Calcola l’altezza e la larghezza dell’immagine risultante.
  • Crea un oggetto della classe JpegOptions e imposta le opzioni richieste.
  • Crea un oggetto della classe JpegImage e inizializzalo con l’oggetto JpegOptions e l’altezza e la larghezza dell’immagine risultante.
  • Scorri l’elenco di immagini e carica ogni immagine usando la classe RasterImage.
  • Crea un Rettangolo per ogni immagine e aggiungilo all’immagine risultante usando il metodo JpegImage.saveArgb32Pixels().
  • Aumenta la larghezza cucita in ogni iterazione.
  • Una volta terminato, salva l’immagine risultante usando il metodo JpegImage.save(string).

L’esempio di codice seguente mostra come unire le immagini orizzontalmente in Java.

// Elenco di immagini
String[] imagePaths = { "image.jpg", "image.jpg" };

// Percorso dell'immagine di output
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";

// Ottieni la dimensione dell'immagine risultante
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());
	}
}

// Combina le immagini in una nuova
try (JpegOptions options = new JpegOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);
	options.setQuality(100);

  	// Crea l'immagine risultante
	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();
			}
		}
    
    		// Salva immagine di output
		newImage.save(outputPath);
	}
}

L’immagine seguente mostra l’output dell’unione di due immagini simili orizzontalmente.

Unisci le immagini orizzontalmente in Java

Unisci le immagini verticalmente in Java

Per unire le immagini verticalmente, devi solo cambiare i ruoli delle proprietà di altezza e larghezza. Il resto del codice sarà lo stesso. L’esempio di codice seguente mostra come unire più immagini verticalmente in Java.

// Elenco di immagini
String[] imagePaths = { "image.jpg", "image.jpg" };

// Percorso dell'immagine di output
String outputPath = "output-vertical.jpg";

// Ottieni la dimensione dell'immagine risultante
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();
	}
}

// Combina le immagini in una nuova
try (JpegOptions options = new JpegOptions()) {
	options.setSource(new StreamSource()); // empty
	options.setQuality(100);
  
  	// Crea l'immagine risultante
	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();
			}
		}
    		// Salva l'immagine risultante
		newImage.save(outputPath);
	}
}

L’immagine seguente mostra l’output dell’unione di due immagini simili verticalmente.

Unisci le immagini verticalmente in Java

Unisci immagini PNG in Java

Nelle sezioni precedenti, abbiamo dimostrato come unire le immagini in formato JPG. Tuttavia, potrebbe essere necessario unire anche le immagini in formato PNG. Per unire le immagini PNG, devi solo sostituire le classi JpegImage e JpegOptions rispettivamente con le classi PngImage e PngOptions e il resto del codice rimarrà lo stesso.

L’esempio di codice seguente mostra come unire più immagini in formato PNG in Java.

// Elenco di immagini
String[] imagePaths = { "image.png", "image.png" };

// Percorso dell'immagine di output
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";

// Ottieni la dimensione dell'immagine risultante
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());
	}
}

// Combina le immagini in una nuova
try (PngOptions options = new PngOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);

  	// Crea l'immagine risultante
	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();
			}
		}
    		// Salva immagine
		newImage.save(outputPath);
	}
}

API di unione di immagini Java: ottieni una licenza gratuita

Puoi ottenere una licenza temporanea gratuita e unire le immagini senza limitazioni di valutazione.

Conclusione

In questo articolo, hai imparato come unire più immagini in un’unica immagine usando Java. Gli esempi di codice Java hanno dimostrato come combinare le immagini verticalmente e orizzontalmente. Inoltre, puoi esplorare di più sull’API di elaborazione delle immagini Java utilizzando documentazione. Inoltre, puoi condividere le tue domande con noi tramite il nostro forum.

Guarda anche

Info: Aspose fornisce un’app Web Collage GRATUITA. Utilizzando questo servizio online, puoi unire immagini da JPG a JPG o da PNG a PNG, creare griglie di foto e così via.