Об’єднати зображення в Java

Існує низка сценаріїв, у яких редагування та маніпуляції зображеннями виконуються програмно. Під час редагування зображень об’єднання зображень є важливою функцією, яка використовується для поєднання двох або більше зображень, наприклад, для створення колажу. У цій статті ви дізнаєтеся, як об’єднати кілька зображень в одне зображення в Java. Ми чітко продемонструємо, як об’єднати зображення по горизонталі та вертикалі.

Java API для об’єднання зображень — безкоштовне завантаження

Aspose.Imaging for Java — це потужний API обробки зображень, який дозволяє працювати з широким діапазоном форматів зображень. Він надає різноманітні функції, необхідні для редагування зображень. Ми використовуватимемо цей API, щоб об’єднати наші зображення в цій публікації блогу. Ви можете завантажити API або встановити його за допомогою наведених нижче конфігурацій 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>

Об’єднання кількох зображень у Java

Ви можете об’єднати зображення одним із двох способів: вертикально та горизонтально. При вертикальному об’єднанні зображення поєднуються одне за одним у вертикальному напрямку. Тоді як при горизонтальному злитті зображення додаються одне до одного в горизонтальному напрямку. Отже, давайте подивимося, як об’єднати зображення обома способами.

Об’єднати зображення по горизонталі в Java

Нижче наведено кроки для горизонтального об’єднання зображень за допомогою Java.

  • Спочатку вкажіть шляхи зображень у масиві рядків.
  • Обчисліть висоту та ширину отриманого зображення.
  • Створіть об’єкт класу JpegOptions і встановіть необхідні параметри.
  • Створіть об’єкт класу JpegImage та ініціалізуйте його об’єктом JpegOptions, а також висотою та шириною отриманого зображення.
  • Перегляньте список зображень і завантажте кожне зображення за допомогою класу RasterImage.
  • Створіть прямокутник для кожного зображення та додайте його до отриманого зображення за допомогою методу JpegImage.saveArgb32Pixels().
  • Збільшуйте ширину шва в кожній ітерації.
  • Після цього збережіть отримане зображення за допомогою методу JpegImage.save(string).

У наведеному нижче прикладі коду показано, як об’єднати зображення горизонтально в Java.

// Список зображень
String[] imagePaths = { "image.jpg", "image.jpg" };

// Шлях вихідного зображення
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";

// Отримайте кінцевий розмір зображення
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());
	}
}

// Об’єднайте зображення в одне
try (JpegOptions options = new JpegOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);
	options.setQuality(100);

  	// Створіть результуюче зображення
	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();
			}
		}
    
    		// Зберегти вихідне зображення
		newImage.save(outputPath);
	}
}

На наступному зображенні показано результат об’єднання двох схожих зображень по горизонталі.

Об’єднати зображення по горизонталі в Java

Об’єднайте зображення вертикально в Java

Щоб об’єднати зображення по вертикалі, вам потрібно лише поміняти ролі властивостей висоти та ширини. Решта коду буде такою ж. Наведений нижче приклад коду демонструє, як об’єднати кілька зображень вертикально в Java.

// Список зображень
String[] imagePaths = { "image.jpg", "image.jpg" };

// Шлях виведення зображення
String outputPath = "output-vertical.jpg";

// Отримайте кінцевий розмір зображення
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();
	}
}

// Об’єднайте зображення в одне
try (JpegOptions options = new JpegOptions()) {
	options.setSource(new StreamSource()); // empty
	options.setQuality(100);
  
  	// Створіть результуюче зображення
	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();
			}
		}
    		// Збережіть отримане зображення
		newImage.save(outputPath);
	}
}

На наступному зображенні показано результат об’єднання двох схожих зображень по вертикалі.

Об’єднайте зображення вертикально в Java

Об’єднання зображень PNG у Java

У попередніх розділах ми продемонстрували, як об’єднати зображення у форматі JPG. Однак вам може знадобитися також об’єднати зображення у форматі PNG. Щоб об’єднати зображення PNG, вам потрібно лише замінити класи JpegImage і JpegOptions на PngImage і PngOptions відповідно, а решта коду залишиться незмінною.

У наступному прикладі коду показано, як об’єднати кілька зображень у форматі PNG у Java.

// Список зображень
String[] imagePaths = { "image.png", "image.png" };

// Шлях вихідного зображення
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";

// Отримайте кінцевий розмір зображення
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());
	}
}

// Об’єднайте зображення в одне
try (PngOptions options = new PngOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);

  	// Створіть результуюче зображення
	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();
			}
		}
    		// Зберегти зображення
		newImage.save(outputPath);
	}
}

Java Image Merging API – отримайте безкоштовну ліцензію

Ви можете отримати безкоштовну тимчасову ліцензію і об’єднати зображення без обмежень оцінки.

Висновок

У цій статті ви дізналися, як об’єднати кілька зображень в одне за допомогою Java. Зразки коду Java продемонстрували, як комбінувати зображення по вертикалі та горизонталі. Крім того, ви можете дізнатися більше про API обробки зображень Java за допомогою документації. Крім того, ви можете поділитися своїми запитами з нами через наш форум.

Дивись також

Інформація: Aspose надає БЕЗКОШТОВНУ веб-програму Collage. Використовуючи цей онлайн-сервіс, ви можете об’єднувати зображення JPG в JPG або PNG у PNG, створювати фотосітки тощо.