Объединение изображений в 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.
  • Создайте Rectangle для каждого изображения и добавьте его к полученному изображению с помощью метода 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);
	}
}

API слияния изображений Java — получите бесплатную лицензию

Вы можете получить бесплатную временную лицензию и объединить изображения без ограничений на оценку.

Вывод

В этой статье вы узнали, как объединить несколько изображений в одно изображение с помощью Java. Примеры кода Java продемонстрировали, как комбинировать изображения по вертикали и горизонтали. Кроме того, вы можете узнать больше об API обработки изображений Java, используя документацию. Кроме того, вы можете поделиться с нами своими вопросами через наш форум.

Смотрите также

Информация: Aspose предоставляет БЕСПЛАТНОЕ веб-приложение для создания коллажей. Используя этот онлайн-сервис, вы можете объединять изображения JPG в JPG или PNG в PNG, создавать фотосетки и т. д.