Java'da Görüntüleri Birleştirme

Görüntü düzenleme ve manipülasyonun programlı olarak gerçekleştirildiği bir dizi senaryo vardır. Görüntü düzenlemede, görüntüleri birleştirmek, örneğin bir kolaj oluşturmak için iki veya daha fazla görüntüyü birleştirmek için kullanılan önemli bir özelliktir. Bu yazıda, Java’da birden çok görüntüyü tek bir görüntüde nasıl birleştireceğinizi öğreneceksiniz. Görüntüleri yatay ve dikey olarak nasıl birleştireceğimizi açıkça göstereceğiz.

Görüntüleri Birleştirmek için Java API - Ücretsiz İndirme

Aspose.Imaging for Java, çok çeşitli görüntü biçimleriyle çalışmanıza izin veren güçlü bir görüntü işleme API’sidir. Görüntü düzenleme için gerekli olan çeşitli özellikler sağlar. Bu blog gönderisindeki resimlerimizi birleştirmek için bu API’yi kullanacağız. API’yi indirebilir veya aşağıdaki Maven yapılandırmalarını kullanarak yükleyebilirsiniz.

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

Java’da Birden Fazla Görüntüyü Birleştirme

Görüntüleri iki yoldan biriyle birleştirebilirsiniz: dikey ve yatay olarak. Dikey birleştirmede, görüntüler tek tek dikey yönde birleştirilir. Yatay birleştirmede ise görüntüler yatay yönde birbirine eklenir. Öyleyse görüntüleri her iki şekilde nasıl birleştireceğimizi görelim.

Görüntüleri Java’da Yatay Olarak Birleştirme

Java kullanarak görüntüleri yatay olarak birleştirme adımları aşağıda verilmiştir.

  • İlk olarak, bir dize dizisindeki görüntülerin yollarını belirtin.
  • Ortaya çıkan görüntünün yüksekliğini ve genişliğini hesaplayın.
  • JpegOptions sınıfından bir nesne oluşturun ve gerekli seçenekleri ayarlayın.
  • JpegImage sınıfından bir nesne oluşturun ve onu JpegOptions nesnesi ve elde edilen görüntünün yüksekliği ve genişliği ile başlatın.
  • RasterImage sınıfını kullanarak görüntü listesi arasında geçiş yapın ve her görüntüyü yükleyin.
  • Her görüntü için bir Dikdörtgen oluşturun ve JpegImage.saveArgb32Pixels() yöntemini kullanarak ortaya çıkan görüntüye ekleyin.
  • Her yinelemede dikişli genişliği artırın.
  • Bittiğinde, ortaya çıkan görüntüyü JpegImage.save(string) yöntemini kullanarak kaydedin.

Aşağıdaki kod örneği, görüntülerin Java’da yatay olarak nasıl birleştirileceğini gösterir.

// resim listesi
String[] imagePaths = { "image.jpg", "image.jpg" };

// Çıktı görüntü yolu
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";

// Ortaya çıkan görüntü boyutunu al
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());
	}
}

// Görüntüleri yenisiyle birleştirin
try (JpegOptions options = new JpegOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);
	options.setQuality(100);

  	// Ortaya çıkan görüntüyü oluştur
	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();
			}
		}
    
    		// Çıktı görüntüsünü kaydet
		newImage.save(outputPath);
	}
}

Aşağıdaki görsel iki benzer görseli yatay olarak birleştirmenin çıktısını göstermektedir.

Görüntüleri Java'da Yatay Olarak Birleştirme

Java’da Görüntüleri Dikey Olarak Birleştirin

Görüntüleri dikey olarak birleştirmek için yalnızca yükseklik ve genişlik özelliklerinin rollerini değiştirmeniz gerekir. Kodun geri kalanı aynı olacaktır. Aşağıdaki kod örneği, Java’da birden çok görüntünün dikey olarak nasıl birleştirileceğini gösterir.

// resim listesi
String[] imagePaths = { "image.jpg", "image.jpg" };

// Çıktı görüntüsünün yolu
String outputPath = "output-vertical.jpg";

// Ortaya çıkan görüntü boyutunu al
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();
	}
}

// Görüntüleri yenisiyle birleştirin
try (JpegOptions options = new JpegOptions()) {
	options.setSource(new StreamSource()); // empty
	options.setQuality(100);
  
  	// Ortaya çıkan görüntüyü oluştur
	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();
			}
		}
    		// Ortaya çıkan resmi kaydet
		newImage.save(outputPath);
	}
}

Aşağıdaki görsel iki benzer görselin dikey olarak birleştirilmesinin çıktısını göstermektedir.

Java'da Görüntüleri Dikey Olarak Birleştirin

PNG Görüntülerini Java’da Birleştirme

Önceki bölümlerde, JPG formatındaki resimlerin nasıl birleştirileceğini gösterdik. Ancak PNG formatındaki resimleri de birleştirmeniz gerekebilir. PNG görüntülerini birleştirmek için yalnızca JpegImage ve JpegOptions sınıflarını sırasıyla PngImage ve PngOptions sınıflarıyla değiştirmeniz gerekir ve kodun geri kalanı aynı kalır.

Aşağıdaki kod örneği, Java’da PNG biçiminde birden çok görüntünün nasıl birleştirileceğini gösterir.

// resim listesi
String[] imagePaths = { "image.png", "image.png" };

// Çıktı görüntü yolu
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";

// Ortaya çıkan görüntü boyutunu al
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());
	}
}

// Görüntüleri yenisiyle birleştirin
try (PngOptions options = new PngOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);

  	// Ortaya çıkan görüntüyü oluştur
	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();
			}
		}
    		// Resmi Kaydet
		newImage.save(outputPath);
	}
}

Java Image Merging API - Ücretsiz Lisans Alın

Ücretsiz bir geçici lisans alabilirsiniz ve değerlendirme sınırlamaları olmadan görüntüleri birleştirebilirsiniz.

Çözüm

Bu makalede, Java kullanarak birden çok görüntüyü tek bir görüntüde nasıl birleştireceğinizi öğrendiniz. Java kod örnekleri, görüntülerin dikey ve yatay olarak nasıl birleştirileceğini göstermiştir. Ayrıca, belgeleri kullanarak Java görüntü işleme API’si hakkında daha fazlasını keşfedebilirsiniz. Ayrıca, sorularınızı [forumumuz] aracılığıyla bizimle paylaşabilirsiniz]26.

Ayrıca bakınız

Bilgi: Aspose bir ÜCRETSİZ Kolaj web uygulaması sağlar. Bu çevrimiçi hizmeti kullanarak, JPG’den JPG’ye veya PNG’den PNG’ye resimleri birleştirebilir, fotoğraf ızgaraları vb. oluşturabilirsiniz.