Sloučit obrázky v Javě

Existuje řada scénářů, ve kterých se úpravy a manipulace s obrázky provádějí programově. Při úpravách obrázků je slučování obrázků důležitou funkcí, která se používá ke spojení dvou nebo více obrázků, například za účelem vytvoření koláže. V tomto článku se dozvíte, jak sloučit více obrázků do jednoho obrázku v Javě. Explicitně si ukážeme, jak sloučit obrázky horizontálně a vertikálně.

Java API pro sloučení obrázků – ke stažení zdarma

Aspose.Imaging for Java je výkonné rozhraní API pro zpracování obrázků, které umožňuje pracovat s širokou škálou formátů obrázků. Poskytuje řadu funkcí, které jsou nutné pro úpravu obrázků. Toto rozhraní API použijeme ke sloučení našich obrázků v tomto příspěvku na blogu. Rozhraní API si můžete buď stáhnout, nebo jej nainstalovat pomocí následujících konfigurací 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>

Sloučit více obrázků v Javě

Obrázky můžete sloučit jedním ze dvou způsobů: vertikálně a horizontálně. Při vertikálním slučování se obrázky spojují jeden po druhém ve vertikálním směru. Kdežto při horizontálním slučování se obrázky k sobě připojují v horizontálním směru. Pojďme se tedy podívat, jak sloučit obrázky oběma způsoby.

Sloučit obrázky vodorovně v Javě

Níže jsou uvedeny kroky pro horizontální sloučení obrázků pomocí Java.

  • Nejprve zadejte cesty k obrázkům v poli řetězců.
  • Vypočítejte výšku a šířku výsledného obrázku.
  • Vytvořte objekt třídy JpegOptions a nastavte požadované možnosti.
  • Vytvořte objekt třídy JpegImage a inicializujte jej objektem JpegOptions a výškou a šířkou výsledného obrázku.
  • Projděte seznam obrázků a načtěte každý obrázek pomocí třídy RasterImage.
  • Vytvořte Rectangle pro každý obrázek a přidejte jej do výsledného obrázku pomocí metody JpegImage.saveArgb32Pixels().
  • Zvětšete šířku šití v každé iteraci.
  • Po dokončení uložte výsledný obrázek pomocí metody JpegImage.save(string).

Následující ukázka kódu ukazuje, jak horizontálně sloučit obrázky v Javě.

// Seznam obrázků
String[] imagePaths = { "image.jpg", "image.jpg" };

// Cesta výstupního obrazu
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";

// Získejte výslednou velikost obrázku
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());
	}
}

// Spojte obrázky do nového
try (JpegOptions options = new JpegOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);
	options.setQuality(100);

  	// Vytvořte výsledný obrázek
	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();
			}
		}
    
    		// Uložit výstupní obrázek
		newImage.save(outputPath);
	}
}

Následující obrázek ukazuje výstup sloučení dvou podobných obrázků vodorovně.

Sloučit obrázky vodorovně v Javě

Sloučit obrázky vertikálně v Javě

Chcete-li obrázky sloučit vertikálně, musíte pouze přepnout role vlastností výšky a šířky. Zbytek kódu bude stejný. Následující ukázka kódu ukazuje, jak sloučit více obrázků vertikálně v Javě.

// Seznam obrázků
String[] imagePaths = { "image.jpg", "image.jpg" };

// Cesta výstupního obrázku
String outputPath = "output-vertical.jpg";

// Získejte výslednou velikost obrázku
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();
	}
}

// Spojte obrázky do nového
try (JpegOptions options = new JpegOptions()) {
	options.setSource(new StreamSource()); // empty
	options.setQuality(100);
  
  	// Vytvořte výsledný obrázek
	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();
			}
		}
    		// Uložte výsledný obrázek
		newImage.save(outputPath);
	}
}

Následující obrázek ukazuje výstup sloučení dvou podobných obrázků svisle.

Sloučit obrázky vertikálně v Javě

Sloučit obrázky PNG v Javě

V předchozích částech jsme si ukázali, jak sloučit obrázky ve formátu JPG. Možná však budete muset sloučit i obrázky ve formátu PNG. Chcete-li sloučit obrázky PNG, stačí nahradit třídy JpegImage a JpegOptions třídami PngImage a PngOptions a zbytek kódu zůstane stejný.

Následující ukázka kódu ukazuje, jak sloučit více obrázků ve formátu PNG v Javě.

// Seznam obrázků
String[] imagePaths = { "image.png", "image.png" };

// Cesta výstupního obrazu
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";

// Získejte výslednou velikost obrázku
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());
	}
}

// Spojte obrázky do nového
try (PngOptions options = new PngOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);

  	// Vytvořte výsledný obrázek
	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();
			}
		}
    		// Uložit obrázek
		newImage.save(outputPath);
	}
}

Java Image Merging API – Získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci a sloučit obrázky bez omezení hodnocení.

Závěr

V tomto článku jste se naučili, jak sloučit více obrázků do jednoho obrázku pomocí Java. Ukázky kódu Java ukázaly, jak kombinovat obrázky vertikálně a horizontálně. Kromě toho můžete prozkoumat více o rozhraní API pro zpracování obrazu Java pomocí dokumentace. Své dotazy s námi můžete sdílet také prostřednictvím našeho fóra.

Viz také

Informace: Aspose poskytuje bezplatnou webovou aplikaci Collage. Pomocí této online služby můžete sloučit obrázky JPG do JPG nebo PNG do PNG, vytvářet mřížky fotografií a tak dále.