Slå samman bilder i Java

Det finns en rad scenarier där bildredigering och manipulation utförs programmatiskt. Vid bildredigering är sammanslagning av bilder en viktig funktion som används för att kombinera två eller flera bilder, till exempel för att göra ett collage. I den här artikeln kommer du att lära dig hur du slår samman flera bilder till en enda bild i Java. Vi kommer explicit att visa hur man sammanfogar bilder horisontellt och vertikalt.

Java API för att slå samman bilder - Gratis nedladdning

Aspose.Imaging for Java är ett kraftfullt bildbehandlings-API som låter dig arbeta med ett brett utbud av bildformat. Den tillhandahåller en mängd funktioner som krävs för bildredigering. Vi kommer att använda detta API för att slå samman våra bilder i det här blogginlägget. Du kan antingen ladda ner API:et eller installera det med följande Maven-konfigurationer.

<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>

Slå samman flera bilder i Java

Du kan slå samman bilderna på något av de två sätten: vertikalt och horisontellt. Vid vertikal sammanslagning kombineras bilder en efter en i vertikal riktning. Medan bilderna vid horisontell sammanslagning läggs till varandra i horisontell riktning. Så låt oss se hur man slår ihop bilder på båda sätten.

Slå samman bilder horisontellt i Java

Följande är stegen för att slå samman bilder horisontellt med Java.

  • Ange först sökvägarna för bilderna i en strängmatris.
  • Beräkna höjden och bredden på den resulterande bilden.
  • Skapa ett objekt av klassen JpegOptions och ställ in de nödvändiga alternativen.
  • Skapa ett objekt av klassen JpegImage och initiera det med JpegOptions-objektet och höjden och bredden på den resulterande bilden.
  • Gå igenom listan med bilder och ladda varje bild med klassen RasterImage.
  • Skapa en Rektangel för varje bild och lägg till den i den resulterande bilden med metoden JpegImage.saveArgb32Pixels().
  • Öka stygnbredden i varje iteration.
  • När du är klar sparar du den resulterande bilden med metoden JpegImage.save(string).

Följande kodexempel visar hur man sammanfogar bilder horisontellt i Java.

// Lista över bilder
String[] imagePaths = { "image.jpg", "image.jpg" };

// Utdatabildsökväg
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";

// Få resulterande bildstorlek
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());
	}
}

// Kombinera bilder till en ny
try (JpegOptions options = new JpegOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);
	options.setQuality(100);

  	// Skapa resulterande bild
	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();
			}
		}
    
    		// Spara utdatabild
		newImage.save(outputPath);
	}
}

Följande bild visar resultatet av att slå samman två liknande bilder horisontellt.

Slå samman bilder horisontellt i Java

Slå samman bilder vertikalt i Java

För att slå samman bilderna vertikalt behöver du bara byta roller för höjd- och breddegenskaper. Resten av koden kommer att vara densamma. Följande kodexempel visar hur man slår samman flera bilder vertikalt i Java.

// Lista över bilder
String[] imagePaths = { "image.jpg", "image.jpg" };

// Sökväg för utdatabild
String outputPath = "output-vertical.jpg";

// Få resulterande bildstorlek
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();
	}
}

// Kombinera bilder till en ny
try (JpegOptions options = new JpegOptions()) {
	options.setSource(new StreamSource()); // empty
	options.setQuality(100);
  
  	// Skapa resulterande bild
	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();
			}
		}
    		// Spara den resulterande bilden
		newImage.save(outputPath);
	}
}

Följande bild visar resultatet av att slå samman två liknande bilder vertikalt.

Slå samman bilder vertikalt i Java

Slå ihop PNG-bilder i Java

I de föregående avsnitten visade vi hur man slår ihop bilder i JPG-format. Du kan dock behöva slå ihop bilder i PNG-format också. För att slå samman PNG-bilder behöver du bara ersätta klasserna JpegImage och JpegOptions med klasserna PngImage respektive PngOptions och resten av koden förblir densamma.

Följande kodexempel visar hur man slår ihop flera bilder i PNG-format i Java.

// Lista över bilder
String[] imagePaths = { "image.png", "image.png" };

// Utdatabildsökväg
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";

// Få resulterande bildstorlek
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());
	}
}

// Kombinera bilder till en ny
try (PngOptions options = new PngOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);

  	// Skapa resulterande bild
	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();
			}
		}
    		// Spara bild
		newImage.save(outputPath);
	}
}

Java Image Merging API - Skaffa en gratis licens

Du kan få en gratis tillfällig licens och slå samman bilderna utan utvärderingsbegränsningar.

Slutsats

I den här artikeln har du lärt dig hur du slår ihop flera bilder till en enda bild med hjälp av Java. Java-kodexemplen har visat hur man kombinerar bilderna vertikalt och horisontellt. Dessutom kan du utforska mer om Javas bildbehandlings-API med hjälp av dokumentation. Du kan också dela dina frågor med oss via vårt forum.

Se även

Info: Aspose tillhandahåller en GRATIS Collage-webbapp. Med den här onlinetjänsten kan du slå samman JPG till JPG eller PNG till PNG-bilder, skapa fotorutnät och så vidare.