Существует ряд сценариев, в которых редактирование изображений и манипулирование ими выполняются программно. В редактировании изображений слияние изображений является важной функцией, которая используется для объединения двух или более изображений, например, для создания коллажа. В этой статье вы узнаете, как объединить несколько изображений в одно изображение в Java. Мы явно продемонстрируем, как объединять изображения по горизонтали и вертикали.
- Java API для слияния изображений
- Объединение нескольких изображений в Java
- Объединение изображений PNG в 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.
// Список изображений
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);
}
}
На следующем изображении показан результат объединения двух похожих изображений по вертикали.
Объединение изображений 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, используя документацию. Кроме того, вы можете поделиться с нами своими вопросами через наш форум.
Смотрите также
- Преобразование изображений в оттенки серого в C#
- Добавить водяной знак к изображениям с помощью C#
- Сжатие изображений PNG, JPEG и TIFF с помощью C#
Информация: Aspose предоставляет БЕСПЛАТНОЕ веб-приложение для создания коллажей. Используя этот онлайн-сервис, вы можете объединять изображения JPG в JPG или PNG в PNG, создавать фотосетки и т. д.